[英]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.