PHP を学ぼうとしているのですが、「静的匿名関数」に行き詰まっています。
これはチュートリアルで見つけました ( http://www.slideshare.net/melechi/php-53-part-2-lambda-functions-closures-presentation )
「オブジェクト指向
- Lambda 関数は、作成されたクラスのスコープに自動的にバインドされるため、クロージャです。
- '
$this
' はスコープ内で必ずしも必要ではありません。- ' ' を削除
$this
すると、メモリを節約できます。- Lambda 関数を静的として宣言することで、この動作をブロックできます。」
このコードの何が問題になっていますか?
次のエラーが表示されます。
解析エラー: C:\wamp\www\z-final\a.php の 11 行目に `T_PAAMAYIM_NEKUDOTAYIM' が必要です。
このコード行が機能しない理由 "return static function(){var_dump($this);};" ?
class foo
{
public function getLambda()
{
return function(){var_dump($this);};
}
public function getStaticLambda()
{
return static function(){var_dump($this);};
}
}
$foo = new foo();
$lambda = $foo->getLambda();
$staticLambda = $foo->getStaticLambda();
$lambda();
$staticLambda();