簡體   English   中英

PHP ::存儲數據庫連接與靜態實例化

[英]PHP :: Storing a database connection v. static instantiation

以下哪種方法在PHP中更有效(或精通)?

class Amazing {
    protected $db;

    public function __construct () {
         $this->db = new Database::getInstance();
    }

    public function do ($blah) {
         $this->db->doInsert($blah);
    }

    public function again ($blah) {
         $this->db->doUpdate($blah);
    }
}

要么:

class Less_Amazing {

    public function do ($blah) {
         $db = new Database::getInstance();
         $db->doInsert($blah)
    }

    public function again ($blah) {
         $db = new Database::getInstance();
         $db->doUpdate($blah)
    }
}

一品脫啤酒就在答案上。

我建議在這種情況下使用依賴注入。 您的班級應盡可能少依賴其他班級。 通過依賴項注入構建對象時,應提供任何依賴項。 每個班級應遵循“單一責任”原則,即每個班級應負有單一責任。 通過控制反轉可以啟用依賴項注入。 這意味着Amazing類不必創建數據庫連接的實例。 通過構造函數注入為它提供了一個數據庫連接對象,而它要做的就是完成其“驚人的工作” :)

$db = new Database::getInstance();
$amazing = new Amazing($db);

class Amazing {
    protected $db;

    public function __construct ($db) {
         $this->db = $db;
    }

    public function do ($blah) {
         $this->db->doInsert($blah);
    }

    public function again ($blah) {
         $this->db->doUpdate($blah);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM