2007年の終わりに、PHP用のラムダ関数を追加した(ただしクロージャは追加しなかった)パッチが追加されました。 メーリングリストでの議論の中で、クロージャーのサポートがなければ、クロージャーをPHPに追加する必要はないと判断されました。
ただし、このトピックへの関心は、Christian Seilerによる初期パッチとDmitry Stogovによる新しいパッチのリリースに大きな変化をもたらしました。
その結果、PHPにはクロージャーとラムダ関数があります(5.3)
関数getAdder($ x){ 
リターン関数($ y)使用($ x){ 
//または:字句$ x; 
return $ x + $ y; 
}; 
} 
// ---- OOP 
クラスの例{ 
プライベート $検索; 
パブリック関数__construct($ search){ 
$ this-> search = $ search; 
} 
パブリック関数setSearch($ search){ 
$ this-> search = $ search; 
} 
パブリック関数getReplacer($置換){ 
リターン関数($テキスト)使用($置換){ 
return str_replace($ this-> search、$ replacement、$ text); 
}; 
} 
} 
$ example = new Example( 'hello' ); 
$ replacer = $ example-> getReplacer( 'goodbye' ); 
echo $ replacer( 'hello world' ); //さよならの世界 
$ example-> setSearch( 'world' ); 
echo $ replacer( 'hello world' ); //こんにちはさようなら 
クラスの例{ 
パブリック関数__invoke(){ 
echo "Hello World!\ n" ; 
} 
} 
$ foo = new例; 
$ foo(); 
// ---リフレクション 
クラスの例{ 
static function printer(){echo "Hello World!\ n" ; } 
} 
$ class = new ReflectionClass( 'Example' ); 
$ method = $ class-> getMethod( 'printer' ); 
$クロージャー= $ method-> getClosure(); 
$クロージャー(); *このソースコードは、 ソースコードハイライターで強調表示されました。
PHP 5.3のリリースを楽しみにしています
ソース:
UPD: 
Erlang 、 
ECMAScript 、 
Rubyなどの言語のドキュメントで、これらの革新の利点について詳しく知ることができます。
以前に同様の機能を実装することが可能でした。それは単なる「構文糖」です