Php 设置动态';发现';班

Php 设置动态';发现';班,php,class,inheritance,properties,static,Php,Class,Inheritance,Properties,Static,试图通过在获取当前类的类型后引用数组和计数来设置数组和计数,这两个都是静态成员。其目的是拥有一个全局列表,其中包含我已加载的特定类型的所有项,但我希望将它们拆分为每个特定类的静态属性。问题是,我将从基类继承几个类,但我希望附加“child”类中的静态属性 以下是我拍摄的目的,付出还是索取: $Class = get_class($this); ($Class)::$List[($Class)::$Count++] = $this; 在PHP5.3及更高版本中,可以使用访问重写的静态变量。简短的

试图通过在获取当前类的类型后引用数组和计数来设置数组和计数,这两个都是静态成员。其目的是拥有一个全局列表,其中包含我已加载的特定类型的所有项,但我希望将它们拆分为每个特定类的静态属性。问题是,我将从基类继承几个类,但我希望附加“child”类中的静态属性

以下是我拍摄的目的,付出还是索取:

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

在PHP5.3及更高版本中,可以使用访问重写的静态变量。简短的版本是在访问静态变量时使用
静态
而不是
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);

已经考虑和说明;如果这行得通,非常感谢。太好了。非常感谢,先生。我会保留$Count变量,并使用$List[]和Count($List),但这可能是一个选择的问题…否则看起来B类将从类中获得一个独立的列表。。。C、 假设C与B相同?是否“使用我编辑的代码,如果我创建的C类与B类相同,它们将有独立的列表”?请注意,问答网站而不是论坛也是如此。答案应与问题分开张贴。此外,您的代码不会添加任何内容到VolkerK的功能中。您不需要静态的
$Count
变量,因为赋值给(
$List[]=$this
)会附加到数组中。此外,您不需要重写构造函数来调用父构造函数。