PHP 5.3和匿名函数默认值?

cwd*_*cwd 3 php anonymous function

在php 5.3中,当您创建匿名函数时,是否可以设置默认值?

就像在普通的功能中一样

function tim($ a = 123){

}

其中123是$ a的默认值.什么与匿名函数相邻?

UPDATE

我在这种情况下遇到麻烦:

//$data is an object;
$data->title = 'test';
add_filter('title',function($current, $new = $data->title ){ return $new; });
Run Code Online (Sandbox Code Playgroud)

产生"意外的T_VARIABLE"

没有$data->title一点工作正常,但我真的想通过这个......

add_filter('title',function($current, $new = 'some-title' ){ return $new; });
Run Code Online (Sandbox Code Playgroud)

我在Wordpress中添加了一个过滤器.如果我明确设置它,工作正常,但我想从另一个变量拉它.那可能吗?

Phi*_*hil 9

$ php -r '$foo = function($a = 123){echo $a, PHP_EOL;};$foo(1);$foo();'
1
123
Run Code Online (Sandbox Code Playgroud)

所以这是肯定的

更新

您只能将简单值分配给参数默认值.从手册

默认值必须是常量表达式,而不是(例如)变量,类成员或函数调用.

尝试通过use关键字传递外部变量

add_filter('title', function($current, $new = null) use ($data) {
    if (null === $new) {
        $new = $data->title;
    }
    return $new;
});
Run Code Online (Sandbox Code Playgroud)