PHPで $self = $this してClosureに渡すだなんて...!
Posted: Updated:
PHPでJavaScriptみたいな書き方しちゃったよメモ
クロージャを渡すメソッドに、useで$thisを送りこもうとしたらFatal errorと相成りました。
NGパターン
$thisのまま渡すとダメ。
$this->someMethod(function() use($this) {
return 'hogehoge';
});
// Fatal error: Cannot use $this as lexical variable in...
OKパターン
$selfとしてローカル変数に移したら正常に動作します。
$self = $this;
$this->someMethod(function() use($self) {
return 'hogehoge';
});
// hogehoge
PHP5.4なら直接参照できるっぽい
あてずっぽうで$selfと書いて通過してましたが、どうやら定石手法だったようで・・・。
PHP5.3~おもしろい
所用でPimpleを見たり、Silexを試したりしていたのですが、PHP5.3バリバリのライブラリって改めて見ると面白いかも、と思った次第。
PHP5.4も色々あるし、どこかのタイミングでPHPぢからの刷新も必要なのかなぁと思ったり思わなかったり。たぶん今はPHP5.1.x〜5.2.x 周辺が得意です・・・lol