私はこのコードを持っています:
protected $val = Zend_Registry::get('values');
このコードを挿入すると、次のようになります。
Parse error: syntax error, unexpected '(', expecting ',' or ';' in ...
なぜそれが起こっているのですか?
私はこのコードを持っています:
protected $val = Zend_Registry::get('values');
このコードを挿入すると、次のようになります。
Parse error: syntax error, unexpected '(', expecting ',' or ';' in ...
なぜそれが起こっているのですか?
関数呼び出しやその他の動的式を使用してクラス プロパティを初期化することはできません。定数または原子値のみを指定できます。関数呼び出しで初期化する必要がある場合は、代わりにコンストラクター内でこれを行う必要があります。
protected $val = NULL;
public function __construct() {
$this->val = Zend_Registry::get('values');
}
この宣言には初期化が含まれる場合がありますが、この初期化は定数値である必要があります。つまり、コンパイル時に評価できる必要があり、評価されるために実行時の情報に依存してはなりません。
クラス変数の初期値に関数の戻り値を使用することはできません。
ただし、クラスのコンストラクターで設定できます。
class Myclass{
protected $val;
public function __construct(){
$this->val = Zend_Registry::get('values');
}
}
それはクラス変数のように見え、そのようなクラス変数にデータを割り当てることはできないからです。
ここを参照してください http://www.php.net/manual/en/language.oop5.properties.php
このようにできます。
class something {
protected $_val;
public function __construct()
{
$this->_val = Zend_Registry::get('values');
}
}