анонимная функция как аргумент пользовательской функции в php - PullRequest
0 голосов
/ 27 октября 2018

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

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

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

Этовыдает ошибку:

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

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

1 Ответ

0 голосов
/ 27 октября 2018

С 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

...