尝试设置数组和计数,它们都是静态成员,方法是在获取当前类的类型后引用它们。目的是有一个我已加载的特定类型的所有项目的全局列表,但我希望将它们拆分为每个特定类的静态属性。问题是我将从基类继承一些类,但我希望将"子"类中的静态属性追加到。
以下是我拍摄的目标,给予或接受:
$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);
请记住,如果子类定义了构造函数,则必须显式调用父类的构造函数。