php中的static表现为strangly,无法接受函数

时间:2012-01-08 22:49:05

标签: php php-5.3

此代码抛出解析错误,我不明白为什么。

function t(){
 return 'g';
}
function l(){
    static $b = t();
    return $b;
}
l();

问题是,为什么?

2 个答案:

答案 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;
}