我已经为这个问题绕了几个小时。也许这根本不可能,或者也许有更好的 OOP 解决方案来解决这个问题......
例如:我有两个班
class Base
{
public static $config;
}
class System extends Base
{
public function __construct()
{
self::$config = 2;
}
}
class Core extends Base
{
public function __construct()
{
self::$config = 3;
}
}
我总是将这些类作为单例访问:System::HelloWorld(), Core::DoStuff();
我希望 $Config 属性从 Base 类继承,因为我几乎在每个类中都需要它,所以为什么要一遍又一遍地定义它。
问题是,$Config 属性将自身覆盖为 sonn,因为另一个类为其设置了自己的值:
System::$config = 2;
Core::$config = 3;
print System::$config // it's 3 instead of 2
我确实理解为什么会发生这种情况:因为 Base::$Config 是静态的 - 并且以这种方式 - 与所有孩子共享。我不想要这个,我希望它在每个孩子中都是静态的,但不是它的孩子的低谷。没问题,如果我真的实例化 System 和 Core 类,但我需要它们作为单例......
帮帮我,也许你知道比这个更好的设计模式。