【发布时间】:2011-02-11 18:30:09
【问题描述】:
根据 PHP 文档,可以在具有以下限制的类中初始化属性:
“这个声明可能包含一个初始化,但是这个初始化必须是一个常量值——也就是说,它必须能够在编译时被评估,并且不能依赖运行时信息才能被评估。”
我正在尝试初始化一个数组并遇到了一些问题。虽然这工作正常:
public $var = array(
1 => 4,
2 => 5,
);
这会产生语法错误:
public $var = array(
1 => 4,
2 => (4+1),
);
即使这样也不被接受:
public $var = 4+1;
这表明它不是 array() 语言结构的限制。
现在,我上次检查时,“4+1”等于一个常数值,不仅应该被接受,而且实际上应该被优化掉。无论如何,它当然可以在编译时进行评估。
那么这里发生了什么?限制真的是“根本不能是任何计算的表达式”,而不是“能够在编译时评估”的任何表达式吗?在文档的语言中使用“评估”表明允许进行简单的计算,但是唉....
如果这是 PHP 中的错误,是否有人有错误 ID?我试图找到一个,但没有任何运气。
【问题讨论】:
-
你可以在构造函数中这样做,但不能在类变量声明中。
标签: php class syntax properties