1

私は最近、PHPでかなり面白い問題に遭遇しました。PHPでクロージャを作成し、それを静的変数に割り当てようとしているので、一度だけ定義する必要があります...

    static $hasParent = create_function( '$category, $parent_id', <<<'FUNC'
        ...code...
FUNC
);

しかしそれは私に教えてくれunexpected '(', expecting ',' or ';'ます。これはPHPの「機能」(バグの読み取り)ですか、それとも何か間違ったことをしていますか?

4

1 に答える 1

3

上記の例に示すように、静的変数を宣言できます。式の結果であるこれらの変数に値を割り当てようとすると、解析エラーが発生します。

参照:http://php.net/manual/language.variables.scope.php#language.variables.scope.static


だから、大丈夫ではない

function foo() {
  static $bar = function () {
    echo 'bar';
  };

  echo 'foo', $bar();
}

foo();

わかりました

function foo() {
  static $bar = null;
  if ($bar === null) {
    $bar = function () {
      echo 'bar';
    };
  }

  echo 'foo', $bar();
}

foo();
于 2012-12-13T08:46:22.597 に答える