2012-05-08 30 views
0

嘗試通過在獲取當前類的類型後引用它們來設置數組和靜態成員的計數。目的是爲我加載的特定類型的所有項目提供一個全局列表,但我希望將它們分解爲每個特定類的靜態屬性。問題是我將繼承基類中的幾個類,但是我希望'child'類中的靜態屬性被附加到。設置動態「找到」類的靜態成員

這裏就是我拍攝的,給予或採取:

$Class = get_class($this); 
($Class)::$List[($Class)::$Count++] = $this; 
+0

請注意,SO是問答網站,而不是論壇。答案應與問題分開發布。此外,您的代碼不會添加什麼什麼VolkerK的。你不需要一個靜態的'$ Count'變量,因爲賦給[空括號](http://php.net/array)('$ List [] = $ this')附加到一個數組。此外,您不需要重寫構造函數來調用父構造函數。 – outis

回答

1

在PHP 5.3和更高版本,可以使用late static binding訪問覆蓋的靜態變量。簡短版本是在訪問靜態變量時使用static而不是self或類名。例如:

<?php 
abstract class A { 
    public function __construct() { 
     static::$List[] = $this; 
    } 
} 

class B extends A { 
    public static $List = array(); 
} 

class C extends A { 
    public static $List = array(); 
} 
$b = new B(); 
$c1 = new C(); 
$c2 = new C(); 
$c3 = new C(); 

echo '#objects of class C: ', count(C::$List), "\n"; 
var_dump(C::$List); 

請記住,如果一個子類定義了一個構造函數,它必須顯式調用父類的構造函數。

+0

已經考慮和考慮;如果這工作,非常感謝。 – DigitalJedi805

+0

美麗。非常感謝先生。 – DigitalJedi805

+0

欣賞你是否可以瀏覽我的編輯。 – DigitalJedi805