試試這個:爲什麼你不能在類中的數組值中使用運算符?
然後嘗試相同的,但在類中:
class test {
public $test = array(2+2);
}
我只是想知道爲什麼一個得到一個解析錯誤,也許如何解決這個(一類)儘可能的代碼友好和高性能。
試試這個:爲什麼你不能在類中的數組值中使用運算符?
然後嘗試相同的,但在類中:
class test {
public $test = array(2+2);
}
我只是想知道爲什麼一個得到一個解析錯誤,也許如何解決這個(一類)儘可能的代碼友好和高性能。
您不能使用語句來初始化類字段。它必須是一個文字,一個不變的價值。一種解決方法是使用一個構造:
class Test {
public $test;
public function __construct() {
$this->test = array(2+2);
}
}
類成員變量被稱爲 「屬性」。您也可以看到它們使用其他術語(如「屬性」或「字段」)引用它們,但 爲了本參考的目的,我們將使用「屬性」。它們是 ,通過使用關鍵字
public
,protected
或private
, 中的一個,然後使用正常變量聲明來定義。 這個聲明可能包含一個初始化,但是這個初始化必須是一個常量 值 - 也就是說,它必須能夠在編譯時進行評估,並且 必須不依賴於運行時信息才能被評估。
原因是因爲對類中屬性的賦值必須是靜態聲明。它們不能是被評估的表達式。
也就是說,你可以這樣做:
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
謝謝!任何解決方法?我需要這個測試類作爲配置類,沒有太多亂碼。 –
@ R-U-Bn:構造函數通常比任何初始化都好。使用它,你只需要做一次。 –
「更好」取決於它的用途。我需要一個普通的php-dummy能夠在配置文件中設置這些配置,這種方式可能不夠簡單。對於參考。只有,因爲與此同時我通過mysql set-types解決了我的問題。 –