15

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();
4

2 に答える 2

0

staticキーワードで定義する必要はありません。

<?php
class House
{
     public function paint($color)
     {
         return function() use ($color) { return "Painting the house $color..."; };
     }
}

$house = new House();
$callback = $house->paint('red');
var_dump($callback); // object(Closure)#2 (2) {..}
var_dump($callback()); // "Painting the house red..."
于 2012-09-25T09:11:12.397 に答える