Почему нельзя сделать return echo?

209
18 июля 2018, 12:40

Конструкция return require '/path/to/file.html'; работает

А при использовании return echo $data['html']; возникает ошибка

PHP Parse error: syntax error, unexpected 'echo' (T_ECHO)

Почему?

Answer 1

Функция echo() в php не имеет возвращаемого значения, а return ожидает получить параметр, который обозначает какое либо значение и void функция в этом месте указана быть не может. В отличии от него require может возвращать значение (согласно описанию конструкции include).

Answer 2

Чтобы получить в переменную вывод из require, используйте буфер php:

ob_start();
require '/path/to/file.html';
$output = ob_get_clean();
Answer 3

Хотя, по уже выбранному лучшему ответу, примерно понятно, что вам было нужно. Но, возможно, при "другой" реализации будет полезна лямбда с замыканием (не, помню, с каких версий это работает):

<?php
function test($data) {
    return function($data) use ($data) {
        echo $data['html'];
    };
}
$data = ['html' => 'hello'];
$f = test($data);
$f();
READ ALSO
Как правильно хранить HTML в PostgreSQL?

Как правильно хранить HTML в PostgreSQL?

Работаю с механизмом снапшотовВместо хранения и удалённого краулера prerender предпочёл разместить всё на своём сервере

197
Не могу в Laravel сделать redirect после ajax запроса?

Не могу в Laravel сделать redirect после ajax запроса?

Программа после успешной регистрации отправляет ajax post запрос в registerController, запрос проходит валидацию, если все успешно должен произойти...

171
Плагин с русской морфологией для elasticsearch 6.2

Плагин с русской морфологией для elasticsearch 6.2

Есть ли уже плагины с русской морфологией для elasticsearch 62 ?

184
Не происходит запись данных в сессию

Не происходит запись данных в сессию

На сайте есть галочка(запомнить меня), всё работаетНо теперь не заносятся данные в неё

133