类属性声明

时间:2013-02-13 15:50:09

标签: php class object

我暂时没有使用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

PHP documentation

  

此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且不能依赖于运行时信息才能进行评估。

所以,根据文档,我的代码应该可行。我在这里找不到什么东西?

4 个答案:

答案 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)

不允许运行时评估2 * 3

正如DOCS所说

  

此声明可能包含初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,必须依赖于运行时信息为了评估。