Исправляемая фатальная ошибка: объект класса Closure не может быть преобразован в строку

Я узнаю больше о замыканиях и хочу воссоздать нечто похожее на функцию маршрута Laravel.

У меня есть следующий код:

<?phpClass Foo{public static function show($second, $third){

return "First " . $second . $third;

}

}echo $my_var = Foo::show("Second ", function(){

return "Third ";

});

но если я запускаю его, я получаю ошибку «Catchable fatal error: объект класса Closure не может быть преобразован в строку».

Если я удалю переменную $ third из функции Foo :: show, ошибок не будет, но, конечно, я не вижу третью переменную.

Я ожидал результата: Первый Второй Третий;

Что дает ? Я только учусь .. 🙂

0

Решение

Как $third это функция, чтобы получить возвращаемое значение — вы должен назови это. Вызов функции обычно выполняется с ()Итак, изменение:

return "First " . $second . $third();

Здесь функция передается как $third аргумент выполнен, строка Third возвращается и объединяется с предыдущей строкой.

0

Другие решения

Других решений пока нет …