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 回答