PHP中的实际闭包<5.3

Neu*_*onQ 3 php closures functional-programming

是否有任何方法可以在PHP中为5.3以上的语言版本编写真正的闭包(5.3 use为匿名函数添加了关键字)?

我PHP 5.3+我可以写:

function make_adder($x) {
    return function($to) use ($x) {
        return $to + $x;
    };
}
$add5 = make_adder(5);
$add5(100); # => 105
Run Code Online (Sandbox Code Playgroud)

如何在函数内部使用这种定义函数的模式,内部函数可以访问外部函数变量?

Ste*_*rig 5

以下内容适用于这种简单的情况:

function make_adder($x) {
    return create_function('$to', 'return '.var_export($x, true).' + $to;');
}
$add5 = make_adder(5);
$add5(100); # => 105
Run Code Online (Sandbox Code Playgroud)

但这并不是严格意义上的封闭.

  • 你在PHP <5.3中要求一个解决方案.除了`create_function()`之外,没有等效的匿名函数. (3认同)