Funzioni anonime e closures in PHP 5.3
Posted by Davide | Filed under Programmazione
Fino ad oggi in PHP era possibile creare funzioni anonime (lambda) utilizzando la funzione create_function, ma il suo utilizzo non mi ha mai convinto, sapeva troppo di eval. Essendo abituato a Javascript, e a jQuery, trovo questa sintassi molto più funzionale:
var a = 5;
var myFunc = function (b) {
return a + b;
};
a = 10;
alert( myFunc(2) ); //print 7
L’utilizzo di a all’interno di myFunc è chiamata closure: il valore di a viene bindato (legato) nello scope di myFunc, e rimarrà invariato nel tempo.
Dalla prossima versione di PHP, la 5.3, sarà possibile fare qualcosa del tutto simile. Ecco come:
$a = 5;
$myFunc = function ( $b ) use ( $a ) {
return $a + $b;
};
$a = 10;
echo $myFunc( 2 ); // print 7
Notare che in PHP le closures vanno dichiarate esplicitamente con l’utilizzo del comando use.
Per quanto sia contento di questa nuova feature, rimango perplesso sulla linea con cui viene sviluppato ed aggiornato PHP: si prosegue con la mancanza di convenzioni, e a volte, come in questo caso, funzionalità nuove sanno più di patch che di improvement.
Sul sito di PHP trovate maggiori info, mentre in questo PDF sono elencate tutte le nuove features di PHP 5.3
Via: Zaemis
Tags: chiusure, closures, funzioni anonime, Javascript, lambda, PHP, php 5.3, Programmazione