我一直在阅读PHP 5.3的新功能,其中一个主要功能是关闭。PHP关闭是打破了还是我错过了什么?
除非我非常糟糕错的PHP开发人员要么是:
一)混淆了刚刚匿名函数
二)封闭在PHP 5.3.1破封在我测试
来自what wikipedia says闭包是匿名函数加上函数的父代作用域变量与函数作用域的绑定的机制。最后一部分似乎在PHP中被破坏。
我检查了PHP的bug,并且奇怪地发现了这个。
这里是我如何测试:
<?php
function getFun() {
$x = 2;
return function() {
return $x;
};
}
$f = getFun(); // getFun()(); doesn't work -.-
var_dump($f()); // $f() == null
在语言中实际实现关闭,它将返回2:
def f():
x = 2
return lambda: x
print(f()()) # prints 2
和
alert((function() {
var x = 2;
return function() {
return x;
};
})()()); // alerts 2
所以,我错了或?
我没有新的PHP测试:( – 2010-01-01 19:26:19