與問題快速代碼包括:抽象父類中的PHP靜態變量:問題在示例代碼中!
abstract class ClassParent {
public static $var1 = "ClassParent";
}
class ClassChild1 extends ClassParent{
public static function setvar1(){
ClassChild1::$var1 = "ClassChild1";
}
}
class ClassChild2 extends ClassParent{
public static function setvar1(){
ClassChild2::$var1 = "ClassChild2";
}
}
ClassChild1::setvar1();
echo ClassChild2::$var1;
// Returns "ClassChild1". Shouldn't this still be "ClassParent"?
我假設上述預期的行爲,而不是一個PHP錯誤。在那種情況下,我怎麼能在父類中聲明一個靜態變量,這個靜態變量將被分別處理給子類。換句話說,我希望每個孩子都有獨立的靜態值。我是否必須特別在子類中聲明靜態變量,或者可能有另一種方法?
謝謝!
感謝您的回答。我正在使用5.3。這不應該與我上面編碼的有什麼不同 - 我只是明確指出類名而不是使用「靜態」。事實上,將它們改爲靜態也會產生相同的結果。 – Aron 2011-04-01 13:04:03
...似乎工作的唯一的東西是如果我顯式聲明子類中的變量。但是 - 如果可能的話 - 我想避免這個解決方案... – Aron 2011-04-01 13:05:03
當我發佈我的答案時,你的代碼片段並不完整。我不認爲這是一個乾淨的解決方案。我用更多的信息更新了我的答案。 – Lauren 2011-04-01 13:07:08