我最近遇到了一些有趣的PHP问题。我试图在PHP中创建一个闭包并将其分配给一个静态变量,因此它只需要定义一次......
static $hasParent = create_function( '$category, $parent_id', <<<'FUNC'
...code...
FUNC
);
然而它告诉我unexpected '(', expecting ',' or ';'
。
这是一个PHP“功能”(读取错误),还是我做错了什么?
答案 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();