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

时间:2012-05-08 06:54:13

标签: php class inheritance properties static

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

这是我拍摄,拍摄或拍摄的内容:

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

1 个答案:

答案 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);

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