1

私はこのコードを持っています:
protected $val = Zend_Registry::get('values');

このコードを挿入すると、次のようになります。
Parse error: syntax error, unexpected '(', expecting ',' or ';' in ...

なぜそれが起こっているのですか?

4

3 に答える 3

5

関数呼び出しやその他の動的式を使用してクラス プロパティを初期化することはできません。定数または原子値のみを指定できます。関数呼び出しで初期化する必要がある場合は、代わりにコンストラクター内でこれを行う必要があります。

protected $val = NULL;

public function __construct() {
  $this->val = Zend_Registry::get('values');
}

ドキュメントから:

この宣言には初期化が含まれる場合がありますが、この初期化は定数値である必要があります。つまり、コンパイル時に評価できる必要があり、評価されるために実行時の情報に依存してはなりません。

于 2012-04-30T15:20:20.570 に答える
3

クラス変数の初期値に関数の戻り値を使用することはできません。

ただし、クラスのコンストラクターで設定できます。

class Myclass{
     protected $val;

     public function __construct(){
          $this->val = Zend_Registry::get('values');
     }
}
于 2012-04-30T15:20:36.273 に答える
0

それはクラス変数のように見え、そのようなクラス変数にデータを割り当てることはできないからです。

ここを参照してください http://www.php.net/manual/en/language.oop5.properties.php

このようにできます。

class something {
    protected $_val;

    public function __construct()
    {
        $this->_val = Zend_Registry::get('values');
    }
}
于 2012-04-30T15:21:12.503 に答える