2012-04-30 55 views
1

我有這樣的代碼:
protected $val = Zend_Registry::get('values');解析在PHP(Zend框架)錯誤

每當我把這段代碼我得到:
Parse error: syntax error, unexpected '(', expecting ',' or ';' in ...

爲什麼會發生?

回答

5

您不能使用函數調用或其他動態表達式來初始化類屬性。它只能是一個常數或原子值。如果您需要使用函數調用來初始化它,則必須在構造函數中執行此操作。

protected $val = NULL; 

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

From the docs:

這個聲明可能包括初始化,但初始化必須是一個恆定值 - 也就是說,它必須能夠在編譯時進行評估,不能依賴於運行時間信息以便評估。

+0

ahhh我差點忘了。謝謝 – cprogcr

3

您不能將函數的返回值用於類變量的初始值。

但是,您可以將其設置在類的構造函數中。

class Myclass{ 
    protected $val; 

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

謝謝,我差點忘了。 – cprogcr