ただし、このトピックへの関心は、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などの言語のドキュメントで、これらの革新の利点について詳しく知ることができます。
以前に同様の機能を実装することが可能でした。それは単なる「構文糖」です