我暂时没有使用PHP,但我尝试过这样的事情:
<?php
class Something {
public $x = 2 * 3; // (line 4)
}
此代码触发以下错误:
[Wed Feb 13 17:43:56 2013] [错误] [客户端127.0.0.1] PHP解析错误:语法错误,意外&#39; *&#39;,期待&#39;,&#39; ;或&#39;;&#39;在第4行的/var/www/problem.php
此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且不能依赖于运行时信息才能进行评估。
所以,根据文档,我的代码应该可行。我在这里找不到什么东西?
答案 0 :(得分:8)
声明类的成员时,可以为它们赋值,但不能执行复杂的操作,如数学或函数调用。
<?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;
}
}
答案 1 :(得分:3)
如果您确实仔细阅读了示例中链接到的文档,则明确表示不允许这样做:
class SimpleClass
{
// invalid property declarations:
// (some examples here)
public $var3 = 1+2;
}
这意味着乘法也不起作用。
答案 2 :(得分:2)
所以,根据文档,我的代码应该有用。
文档明确指出:“它必须能够在编译时进行评估,并且不能依赖于运行时信息”
2 * 3
是运行时评估。
public $x = 6;
应该有用。
答案 3 :(得分:0)