我一直在閱讀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