1

次のことをしようとすると、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);
}
4

2 に答える 2

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

クラス プロパティのドキュメントから:

それらは、キーワード public、protected、または private のいずれかを使用して定義され、その後に通常の変数宣言が続きます。この宣言には初期化が含まれる場合がありますが、この初期化は定数値である必要があります。つまり、コンパイル時に評価できる必要があり、評価されるために実行時の情報に依存してはなりません。

最初の試みでは、インスタンス メソッドの内部でのみ意味がある$thisため、プロパティ初期化のコンパイル時の制限をむき出しにしても、インスタンス メソッドの外部での使用はサポートされませんでした。$this

于 2012-10-09T01:35:28.530 に答える
0

$this は、クラスの非静的メソッドの外には存在しません。また、初期化時にはまだ $this はありません。コンストラクター メソッドで配列を初期化します。

于 2012-10-09T01:35:23.657 に答える