当我尝试执行以下操作时,我得到syntax error, unexpected T_VARIABLE
。我究竟做错了什么?
class myObj {
public $birth_month;
public $birthday = array('input_val' => $this->birth_month);
}
我也试过
class myObj {
public $birth_month;
public $birthday = array('input_val' => $birth_month);
}
答案 0 :(得分:3)
您不能使用表达式初始化类属性。它必须是常量值,或者必须在构造函数中初始化它。这是语法错误的来源。
class myObj {
public $birth_month;
public $birthday;
// Initialize it in the constructor
public function __construct($birth_month) {
$this->birth_month = $birth_month;
$this->birthday = array('input_val' => $this->birth_month);
}
}
From the docs on class properties:
通过使用public,protected或private之一,然后是普通变量声明来定义它们。此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估。
在您的第一次尝试中,在实例方法之外使用$this
甚至不会支持属性初始化的编译时限制,因为$this
仅在实例方法中有意义。
答案 1 :(得分:0)
$在您的类的非静态方法之外不存在。此外,在初始化时,还没有$ this。在constuctor方法中初始化数组。