我没有在一段时间使用PHP,但我已经试过这样的事情:
<?php
class Something {
public $x = 2 * 3; // (line 4)
}
此代码触发以下错误:
[星期三2月13日17点43分56秒2013] [错误] [客户端127.0.0.1] PHP解析错误:语法错误,意想不到的 '*',期待 '' 或 ';' 在第4行/var/www/problem.php
在PHP文件说
这个初始化必须是一个恒定值 - 也就是说,它必须能够在编译时进行评估,并以不能依赖于运行时的信息进行评估。
因此,根据文档,我的代码应该工作。 有什么事,我在这里失踪?
当声明一个类的成员,你可以将值分配给他们,但你不能做喜欢数学或函数调用的复杂操作。
<?php
class Something {
public $x = 2 * 3; // (line 4)
}
可:
<?php
class Something {
public $x = 6; // (line 4)
}
所以你的情况你要初始化你的构造函数值来代替。
<?php
class Something {
public $x;
public function __construct()
{
$this->x = 2 * 3;
}
}
如果你真的仔细阅读您的实例链接到文档上面清清楚楚地写着,这是不允许的:
class SimpleClass
{
// invalid property declarations:
// (some examples here)
public $var3 = 1+2;
}
这意味着乘法将不能工作。
因此,根据文档,我的代码应该工作。
不
该文档明确规定:“它必须能够在编译时进行评估,不能依赖于运行时信息”
2 * 3
是运行时评估。
public $x = 6;
应该管用。
运行时间评估2 * 3
是不允许的。
由于DOCS说
该声明可能包括初始化,但初始化必须是一个恒定值-也就是说,它必须能够在编译时进行评估,并以不能依赖于运行时的信息进行评估。