此代码抛出解析错误,我不明白为什么。
function t(){
return 'g';
}
function l(){
static $b = t();
return $b;
}
l();
问题是,为什么?
答案 0 :(得分:10)
从手册中引用:
注意:
尝试为这些[静态]变量分配值 表达式的结果将导致解析错误。
(我的重点)
c.f。 http://www.php.net/manual/en/language.variables.scope.php示例#7
答案 1 :(得分:7)
static
变量值在源解析步骤中填充,因此它们不能包含非常量值。
您可以使用以下内容实现值初始化:
function l(){
static $b;
if (!$b) $b = t();
return $b;
}