【问题标题】:Dynamic "use" to PHP anonymous functionPHP匿名函数的动态“使用”
【发布时间】:2013-07-12 19:06:03
【问题描述】:

在 PHP 中有一个名为 extract 的函数,它接受一个数组,并将您的数据转换为 PHP 变量。当我需要将变量发送到包含时,此功能非常有用。例如。

    extract(array( "test" => 123 ));
    require "test.php"

所以 test.phpprint($test); 返回123

我需要对函数做同样的事情(我可能不知道)。 PHP 5.4 支持use (Anonymous Function),这很有趣。例如。

$test = 123;
call_user_func(function() use($test) {
    print($test);
});

但是,我需要传递具有其他名称和数量的变量。 类似

$useArgs = array( "a" => 1, "b" => 2, "c" => 3 );
call_user_func(function() use(extract($useArgs)) {
    print($a);
    print($b);
    print($c);

    if(isset($d)) {
        print($d);
    }
});

这怎么可能?

【问题讨论】:

    标签: php anonymous-function


    【解决方案1】:

    只需从函数内部调用extract()

    $useArgs = array( "a" => 1, "b" => 2, "c" => 3 );
    call_user_func(function() use($useArgs) {
        extract($useArgs);
        print($a);
        print($b);
        print($c);
    
        if(isset($d)) {
            print($d);
        }
    });
    

    【讨论】:

    • 你还需要将$useArgs声明为global吗?
    • 不,你为什么需要那个?如果还必须使用global,为什么还要使用useuse 的想法是将全局变量绑定到匿名函数的作用域。
    • @kba +1。准确地说,它从调用范围绑定了一个变量(这里的全局有点模棱两可)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2014-09-11
    • 1970-01-01
    • 2021-12-12
    • 2013-09-12
    相关资源
    最近更新 更多