Я узнаю больше о замыканиях и хочу воссоздать нечто похожее на функцию маршрута 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, ошибок не будет, но, конечно, я не вижу третью переменную.
Я ожидал результата: Первый Второй Третий;
Что дает ? Я только учусь .. 🙂
Как $third
это функция, чтобы получить возвращаемое значение — вы должен назови это. Вызов функции обычно выполняется с ()
Итак, изменение:
return "First " . $second . $third();
Здесь функция передается как $third
аргумент выполнен, строка Third
возвращается и объединяется с предыдущей строкой.
Других решений пока нет …