PHP静态关键字和create_function问题

时间:2012-12-13 06:02:36

标签: php

我最近遇到了一些有趣的PHP问题。我试图在PHP中创建一个闭包并将其分配给一个静态变量,因此它只需要定义一次......

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

然而它告诉我unexpected '(', expecting ',' or ';'。 这是一个PHP“功能”(读取错误),还是我做错了什么?

1 个答案:

答案 0 :(得分: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();