PHP,使用什么而不是create_function()?

时间:2017-04-29 10:56:31

标签: php lambda

我知道LambdaClosures之间的差异。我不想使用Closure因为它获得了它的环境,而var_dump() - 它会产生大量的输出。使用lambda与create_function()看起来是一个好主意,但它已被弃用。然后用什么来创建在环境中无法识别的功能?

1 个答案:

答案 0 :(得分:1)

使用static closure

  

从PHP 5.4开始,可以静态声明匿名函数。这个   阻止他们自动绑定当前类   他们。对象也可能在运行时也不会绑定到它们。

<?php

class Foo
{
    function __construct()
    {
        $func = static function() {
            var_dump($this);
        };
        $func();
    }
};
new Foo();

?>

产量

Notice: Undefined variable: this in %s on line %d
NULL