PHP类属性作为stdClass启动

时间:2014-04-16 20:12:00

标签: php

基本上我想做的就是这个

class A {

    public $prop = new stdClass;

}

PHP告诉我我不能这样做:

  

PHP Parse错误:语法错误,意外'新'(T_NEW)在线##

这是怎么回事?我知道你基本上不能在初始化时将函数的返回值赋给属性,但有人可以解释为什么这样,就像技术的东西一样。提前谢谢!

2 个答案:

答案 0 :(得分:2)

尝试使用类构造函数:

class A {

    public $prop;

    public function __construct(){

        $this->prop = new stdClass;

    }

}

PHP manual says:

  

属性声明可能包括初始化,但是这一点   初始化必须是一个常量值 - 也就是说,它必须能够   在编译时进行评估,不得依赖于运行时   信息以便进行评估。

答案 1 :(得分:1)

必须使用静态值初始化

类变量,例如

public $prop = 7; // ok
public $prop = 7+7; // ok - can be evaluated at compile time
public $prop = new stdClass; // bad, dynamic result.
public $prop = get_some_value(); //also bad, dynamic result not available at compile time