访问另一个属性中的一个对象属性

时间:2012-10-09 01:31:21

标签: php attributes

当我尝试执行以下操作时,我得到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);
}

2 个答案:

答案 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方法中初始化数组。