我最近在 PHP 中遇到了一些相当有趣的问题。我正在尝试在 PHP 中创建一个闭包并将其分配给一个静态变量,因此它只需要定义一次...
static $hasParent = create_function( '$category, $parent_id', <<<'FUNC'
...code...
FUNC
);
但是它告诉我unexpected '(', expecting ',' or ';'
。这是一个PHP“功能”(阅读错误),还是我做错了什么?
我最近在 PHP 中遇到了一些相当有趣的问题。我正在尝试在 PHP 中创建一个闭包并将其分配给一个静态变量,因此它只需要定义一次...
static $hasParent = create_function( '$category, $parent_id', <<<'FUNC'
...code...
FUNC
);
但是它告诉我unexpected '(', expecting ',' or ';'
。这是一个PHP“功能”(阅读错误),还是我做错了什么?
注意:
静态变量可以像上面的例子中看到的那样声明。尝试为这些作为表达式结果的变量分配值将导致解析错误。
参考: 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();