Есть ли в PHP способ вызвать анонимную функцию в определении пользовательской функции и передать ее в качестве аргумента?
У меня есть эта функция
function foo( $message = function() {
return 'bar';
}) {
return $message;
}
echo foo();
Это приводит к ошибке:
Неустранимая ошибка: выражение константы содержит недопустимые операции
Синтаксис неправильный или нет способа сделать это?
От PHP документация:
Значением по умолчанию должно быть константное выражение, а не (например)
переменная, член класса или вызов функции. PHP также позволяет использовать
массивов и специального типа NULL в качестве значений по умолчанию
Итак, в основном вы не могу установить throwable (функцию) в качестве значения по умолчанию.
Вместо этого вы можете попробовать что-то вроде ниже:
function foo( $message = null ) {
// If using default value
if (!isset($message)) {
// You can now define your default anonymous function behaviour
$return = function() { return 'bar';};
}
// Now, you can return the anonymous function handle
return $return();
}
echo foo();
Других решений пока нет …