设置动态“找到”类的静态成员


Set a Static Member of a dynamically 'found' class

尝试设置数组和计数,它们都是静态成员,方法是在获取当前类的类型后引用它们。目的是有一个我已加载的特定类型的所有项目的全局列表,但我希望将它们拆分为每个特定类的静态属性。问题是我将从基类继承一些类,但我希望将"子"类中的静态属性追加到。

以下是我拍摄的目标,给予或接受:

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

在 PHP 5.3 及更高版本中,您可以使用后期静态绑定来访问被覆盖的静态变量。简短的版本是,在访问静态变量时,您可以使用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);

请记住,如果子类定义了构造函数,则必须显式调用父类的构造函数。