2012-05-11 62 views

回答

5

您不能使用語句來初始化類字段。它必須是一個文字,一個不變的價值。一種解決方法是使用一個構造:

class Test { 
    public $test; 

    public function __construct() { 
     $this->test = array(2+2); 
    } 
} 

the manual:

類成員變量被稱爲 「屬性」。您也可以看到它們使用其他術語(如「屬性」或「字段」)引用它們,但 爲了本參考的目的,我們將使用「屬性」。它們是 ,通過使用關鍵字publicprotectedprivate, 中的一個,然後使用正常變量聲明來定義。 這個聲明可能包含一個初始化,但是這個初始化必須是一個常量 值 - 也就是說,它必須能夠在編譯時進行評估,並且 必須不依賴於運行時信息才能被評估。

+0

謝謝!任何解決方法?我需要這個測試類作爲配置類,沒有太多亂碼。 –

+0

@ R-U-Bn:構造函數通常比任何初始化都好。使用它,你只需要做一次。 –

+0

「更好」取決於它的用途。我需要一個普通的php-dummy能夠在配置文件中設置這些配置,這種方式可能不夠簡單。對於參考。只有,因爲與此同時我通過mysql set-types解決了我的問題。 –

1

原因是因爲對類中屬性的賦值必須是靜態聲明。它們不能是被評估的表達式。

也就是說,你可以這樣做:

public $test = array(4); // static assignment 
public $test = 'some string'; // static assignment 
public $test = strtoupper(' some string '); // invalid, expression 
public $test = $global_variable; // invalid, not a constant expression 
public $test = time(); // invalid, an expression 
相關問題