2012-05-08 29 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