假設我們有一個MVC模式。如果我們有這樣的事情:
blog_controller.php
<?php
class c_blog{
private $model;
public function __construct(){
include([model_path]);
$this->model = new m_blog();
}
public function post_list(){
return $this->model->get_list();
}
}
blog_model.php
<?php
class m_blog{
public function get_list(){
global $db;
$sel = $db->query("...");
$sel = $db->fetch_array($sel);
return $sel;
}
}
的index.php
<?php
$db = new database();
include "blog_controller.php";
$blog = new c_blog();
var_dump($blog->post_list());
?>
爲什麼上面的例子不好,很多開發者想要OOP
像class m_blog extends database{}
?
我只想要一些優點和不足,因爲我用了15個站點這個「愁」的方法具有高流量,我沒有問題(一些網站與多數據庫工作,它很容易改變全球$db
,全球$db_five
。)
謝謝!
因爲在這種情況下使用'global'是不好的做法。有更高效的替代方法,例如將'$ db'對象注入類中。通常稱爲[依賴注入](https://en.wikipedia.org/wiki/Dependency_injection)。 – Darren
你想說的是這樣的:在模型中創建__construct,在模型中創建一個$ dataconnection變量,並在一個函數中調用全局$ db; $ db-> query(),這樣做:$ this-> dataconnection-> query()? –
完全一樣的東西是的!基本上在類之間共享資源。 (*這不是我使用的完全術語,但多數民衆贊成*) – Darren