私はPHPのOOPで動作するプロジェクトで働いています。
問題は、抽象クラスから2つのサブクラスをインスタンス化しようとすると、最初のインスタンスのみがインスタンス化され、両方はインスタンス化されないことです。
DataBase.php:
abstract class DataBase {
private $_connection;
private static $_singleton = false;
/**
* Fetch an instance of the class.
*/
public final static function connect () {
if ( self::$_singleton === false ) {
self::$_singleton = new static();
}
return self::$_singleton;
}
}
UserDataBaseManager.php:
require_once 'DataBase.php';
class UserDataBase extends DataBase { (...) }
ImageDataBaseManager.php:
require_once 'DataBase.php';
class UserDataBase extends DataBase { (...) }
したがって、ImageDataBaseとUserDataBaseをインスタンス化しようとしている場合:
$imageDB = ImageDataBaseManager::connect();
$userDB = UserDataBase::connect();
var_dump($userDB);
そしてこれは印刷します:
object(ImageDataBaseManager)#2 (1) { ["_connection":"DataBase":private]=> object(PDO)#3 (0) { } }
したがって、ファーストクラスのインスタンスのみを取得していますが、両方が必要です。
どうすれば修正できますか?