子类特定的静态变量

时间:2019-01-06 04:14:39

标签: php orm static

我正在尝试寻找一种让父类影响子类的静态属性的方法-不需要子类中的特殊代码。

我有3个班级:PAQQ是基类,PA进行了扩展。

有些操作我每个子类只想执行一次-特别是获取数据库表定义-无论创建了多少个不同的对象。我的想法是,每个类只需要定义一次。

我的基类当前是这样的:

class Q{

    public static $__initialized = FALSE;

    public static function initialize(){
        static::$__initialized = TRUE;
    }
}

简单的子类如下:

// class A is identical
class P extends Q{
    public static function isInitialized(){
        echo (static::$__initialized) ? 'Initialized' : 'Not initialized';
    }
}

这是我的测试代码:

P::initialize();
A::isInitialized();

调用A::isInitialized()时,即使尚未调用,它也会输出“已初始化”。

我在static中使用了Q::initialize()关键字来尝试绑定到后期的静态绑定,但是我意识到这不会引用P::__initialized,因为__initialized是在Q中定义的 ,因此static::__initialized将引用Q的属性。

是否有一种无需在__initializedP中声明A的情况下完成我想要的事情的方法?我的目标是能够编写一个扩展Q并具有大量可用功能(如加载表结构)的类,而无需在扩展类中进行任何基础工作。

0 个答案:

没有答案