类属性的声明[关闭](class attribute declaration [closed])

2019-10-17 16:51发布

我没有在一段时间使用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文件说

这个初始化必须是一个恒定值 - 也就是说,它必须能够在编译时进行评估,并以不能依赖于运行时的信息进行评估。

因此,根据文档,我的代码应该工作。 有什么事,我在这里失踪?

Answer 1:

当声明一个类的成员,你可以将值分配给他们,但你不能做喜欢数学或函数调用的复杂操作。

<?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;
    }  
}


Answer 2:

如果你真的仔细阅读您的实例链接到文档上面清清楚楚地写着,这是不允许的:

class SimpleClass
{
    // invalid property declarations:
    // (some examples here)
    public $var3 = 1+2;
}

这意味着乘法将不能工作。



Answer 3:

因此,根据文档,我的代码应该工作。

该文档明确规定:“它必须能够在编译时进行评估,不能依赖于运行时信息”

2 * 3是运行时评估。

public $x = 6; 应该管用。



Answer 4:

运行时间评估2 * 3是不允许的。

由于DOCS说

该声明可能包括初始化,但初始化必须是一个恒定值-也就是说,它必须能够在编译时进行评估,并以不能依赖于运行时的信息进行评估。



文章来源: class attribute declaration [closed]
标签: php class object