単一の匿名関数への複数の参照を格納する配列があります:
$fns = array();
//some code
$fn = function(){
echo 'this is closure 12345... < 67890';
// etc etc..
};
for($x=12345; $x<67890; ++$x){
$fns[$x] = $fn;
}
ご覧のとおり、無名関数を1 つだけ作成しています。
ループの中に関数宣言を入れるとどうなるでしょうか? :
$fns = array();
//some code
for($x=12345; $x<67890; ++$x){
$fns[$x] = function(){
echo 'this is closure 12345... < 67890';
// etc etc..
};
}
エンジンは、作成する必要があるオブジェクトが 1 つだけであることを認識できるほどスマートですか?
上記のコードはオブジェクトを 1 つだけ作成しますか、それとも反復ごとに 1 つのオブジェクトを作成しますか?
(質問は、HHVM と Zend Engine の両方を対象としています。)