続々・Zend Engine Hack (クロージャもあるよ)【予告編】

※このパッチ・バイナリでは下記の機能の一部は利用できません。


Windows版はid:shimookaさんのhttp://www.doyouphp.jp/inst/inst_win_vcxe.shtmlを参考にVC++ 2005 でビルドしました。CLIのみで、モジュールは必要最低限のものしか組み込んでいません。

ひとまず仕様は固まったけど解説を書く時間がないので予告だけ。

  • 無名関数 / function(){ echo "Hello, Anonymous World!\n"; }();
  • クロージャfunction get_closure($foo) { return static function(){ static $foo; echo $foo; }; }
  • get_current_function_key() / function($n) { $f = get_current_function_key(); $f($n+1); }
  • set_current_function_key() / function($n) { ${set_current_function_key()}($n+1); }
  • new/cloneからはじまるメソッドチェーン / $(new SomeClass)->someMethod(); $(clone $obj)->property;
  • 角括弧で配列を宣言 / [1, 2, 3, 'foo' => 'hoge', 'bar' => 'fuga', 'baz' => 'piyo']
  • '$' + 角括弧でリスト代入 / $a = 'A'; $b = 'B'; $[$a, $b] = [$b, $a];

厳密にはタイトルは「続・Zend Engine Hack」が正しい表記なのですが、それはまた別のお話。ちなみに今後このネタを書くときは「新・〜」「また又・〜」「ニュー・〜」「痛快・〜」とタイトルが変化するかどうかは定かではありません。