С 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