私はこの問題で数時間輪になって走ってきました。まったく不可能かもしれませんし、これにはもっと良い OOP ソリューションがあるかもしれません...
例: 私は 2 つのクラスを持っています。
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 属性を基本クラスから継承する必要があるのは、ほぼすべてのクラスで必要になるためです。
問題は、別のクラスが独自の値を設定するため、 $Config 属性が Sonn として自身をオーバーライドすることです。
System::$config = 2;
Core::$config = 3;
print System::$config // it's 3 instead of 2
それが起こる理由を私は理解しています: Base::$Config は Static であり、そのように - すべての子を通して共有されているからです。私はこれを望んでいません。各子で静的にしたいのですが、子のトラフではありません。System クラスと Core クラスを実際にインスタンス化しても問題ありませんが、Singleton として必要です...
ここで私を助けてください。これよりも優れたデザインパターンを知っているかもしれません。