所以目前我的class DATABASE
使用单例进行连接,并在class SQL
的构造函数中调用。我有4个其他类扩展class SQL
以访问其方法。问题是,在某些情况下,孩子们互相实例化,所以我担心我会创建多个class SQL
对象,因为他们默认调用他们的父构造函数,即class SQL
。我读过关于依赖注入的内容,但是在我的情况下没有明确如何实现它,所以这就是我的想法。
让所有类扩展class DATABASE
并使class SQL
方法保持静态。
但是我必须在class DATABASE
中调用单独的连接,就像它自己的类一样。
class DATABASE {
function __construct() {
self::getInstance();
/// or DATABASE::getInstance ( im not quite positive which way )
}
public static function getInstance() {
if (self::$instance == false) {
self::$instance = new DATABASEMANAGER();
}
return self::$instance;
}
}
我这样想,因为所有类都扩展class DATABASE
,并相互实例化,我知道我不是在创建多个对象。
我希望这是有道理的,如果你需要我,我可以详细说明,但这是否可以解决我的问题呢?
答案 0 :(得分:1)
我猜你以其他方式建立你的课程,这种方法在我看来更加一致。
class DATABASE extends DATABASEMANAGER
{
static $instance;
private function __construct()
{
parent::__construct();
}
public static function getInstance()
{
if (empty(self::$instance))
{
self::$instance = new self();
}
return self::$instance;
}
}
用法:
class Blog
{
public function __construct()
{
$this->database = DATABASE::getInstance();
}
public function getRecord($id)
{
$result = $this->database->query("SELECT * FROM blog WHERE id='{$id}'");
//or
$result = DATABASE::getInstance()->query("SELECT * FROM blog WHERE id='{$id}'");
//other actions...
}
}