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