尝试设置一个数组和一个计数,它们都是静态成员,通过在获取当前类的类型后引用它们。目的是获得我已加载的特定类型的所有项的全局列表,但我希望将它们拆分为每个特定类的静态属性。问题是我将从基类继承一些类,但我希望将'child'类中的static属性附加到。
这是我拍摄,拍摄或拍摄的内容:
$Class = get_class($this);
($Class)::$List[($Class)::$Count++] = $this;
答案 0 :(得分: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);
请记住,如果子类定义了构造函数,它必须显式调用父代的构造函数。