Ho letto le nuove funzionalità di PHP 5.3 e una delle principali funzionalità è chiusure.Le chiusure PHP sono rotte o mi manca qualcosa?
Se non mi sbaglio molto male, gli sviluppatori PHP sono o:
a) confondendo le chiusure con solo funzioni anonime
b) le chiusure sono rotti in PHP 5.3.1 in cui sto testando
Da what wikipedia says le chiusure sono il meccanismo delle funzioni anonime più l'associazione delle variabili di ambito del genitore della funzione all'ambito della funzione. L'ultima parte sembra rotta in PHP.
Ho controllato bug PHP e non ho trovato nulla a riguardo, stranamente.
Ecco come sto testando:
<?php
function getFun() {
$x = 2;
return function() {
return $x;
};
}
$f = getFun(); // getFun()(); doesn't work -.-
var_dump($f()); // $f() == null
In lingue che in realtà attuare chiusure, restituisce 2:
def f():
x = 2
return lambda: x
print(f()()) # prints 2
e
alert((function() {
var x = 2;
return function() {
return x;
};
})()()); // alerts 2
Quindi, mi sbaglio o ?
Non ho il nuovo php per testare :( –