在Web開發中,MVC架構模式已經成為了一種主流的設計模式。而作為一個Web開發人員,掌握了MVC開發模式,就等于掌握了一種高效、穩定、可擴展性強的開發思路。Passionated的團隊就長期以來堅信,一個好的開發框架應該遵循MVC架構,至此,我們介紹一下,如何設計一個好的MVC框架。
1. 建立Model類
Model類是MVC中最核心的部分,它通常是實現業務邏輯,連接數據庫,提供數據的更新與獲取,并以此為基礎實現Controller和View能夠抽象出具體功能的服務。而在PHP語言中,Model類體現為一個對數據庫連接的封裝,并且嘗試通過MYSQLI數據庫連接進行實現。
如下是MYSQLI數據庫連接封裝的示例代碼:
class Model{ private $host; private $user; private $password; private $database; private $port; private $fields; public function __construct($host, $user, $password, $database, $port){ $this->host = $host; $this->user = $user; $this->password = $password; $this->database = $database; $this->port = $port; $this->connect(); } private function connect(){ $this->connection = mysqli_connect($this->host, $this->user, $this->password, $this->database, $this->port); if (!$this->connection) { die('Could not connect to MySQL: ' . mysqli_error()); }else{ return $this->connection; } } public function query($sql){ $result = mysqli_query($this->connection, $sql); $results = array(); while (($row = mysqli_fetch_assoc($result))) { $results[] = $row; } return $results; } public function __destruct(){ mysqli_close($this->connection); } }2. 開發Controller類 與Model類相比,Controller類功能并沒有那么核心,通常只是將Model類與Veiw類之間產生的數據交互進行組織處理。Controller類通常具有一個重要的功能,就是過濾掉View與Model之間的數據交互,因此需要進行一些數據的數據的驗證與處理。 下面是一個典型的Controller類的示例代碼:
class Controller{ private $vars = array(); function set($name, $value){ $this->vars[$name] = $value; } function view($path){ extract($this->vars); require($path); } }3. 創建View類 最后一個需要開發的類就是View類,通過這個類來完成HTML輸出部分的PHP模板操作。 示例如下:
class View{ public function render($data) { foreach($data as $key=>$value) { $$key = htmlentities($value, ENT_QUOTES); } include(APP_PATH . '/_views/_header.php'); include(APP_PATH . '/_views/example.php'); include(APP_PATH . '/_views/_footer.php'); } }在這個例子中View類被實現為一個帶有render()方法的類,通過這個render()方法,能夠根據指定的HTML模板產生一個包括樣式、圖片等在內的完整的HTML文件,并且植入Data數據。 這是一個非常基礎的MVC框架的設計,在實際的應用中,還需要更加高效、穩定,例如需要使用協議自動加載類或者使用獨立的配置文件。但是,如果你掌握了這三個基本類的設計思路,在實際開發中就可以非常快地進行MVC開發架構的搭建。