我正在一个与 PHP 中的 OOP 一起工作的项目中工作。
问题是当我尝试从一个抽象类实例化两个子类时,只有第一个实例而不是两个实例。
数据库.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) { } }
所以我只得到第一类实例,但我想要两者。
我该如何解决?