私は、次のコードを持っている:PHPシングルトン演技おかしい
$e1 = call_user_func(array("MySQL_Extension", "getInstance"));
$e2 = call_user_func(array("Error_Extension", "getInstance"));
self::$extensions->MySQL = $e1;
self::$extensions->Error = $e2;
// Debug
echo "<pre>";
print_r(self::$extensions);
それぞれのgetInstance()メソッドは次のようになります。
public static function getInstance()
{
if (self::$_instance == null)
{
self::$_instance = new self;
}
return self::$_instance;
}
両方のクラスが同じ "Extension_Abstract" クラスを拡張しますが、何らかの理由「print_r」デバッグ・ステートメントは次のように出力されます。
stdClass Object (
[MySQL] => MySQL_Extension Object
[Error] => MySQL_Extension Object
)
すべてのアイデアはありますか? 2つの "MySQL_Extension"オブジェクトを返し、Error_Extensionクラスを完全に無視するでしょうか?私は困惑している!
'getInstance'メソッドは、' MySQL_Extension'クラスまたはその両方にありますか? – lonesomeday