параметры — анонимная функция в качестве аргумента пользовательской функции в переполнении стека

Есть ли в PHP способ вызвать анонимную функцию в определении пользовательской функции и передать ее в качестве аргумента?

У меня есть эта функция

function foo( $message = function() {
return 'bar';
}) {
return $message;
}
echo foo();

Это приводит к ошибке:

Неустранимая ошибка: выражение константы содержит недопустимые операции

Синтаксис неправильный или нет способа сделать это?

0

Решение

От 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();

Rextester DEMO

1

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

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