在PHP中使用MVC越來越流行了,特別是在一些開源的架構當中。
1.概述
MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟體設計典範,用一種商務邏輯、資料、介面顯示分離的方法組織代碼,將商務邏輯聚集到一個組件裡面,在改進和個人化定製介面及使用者互動的同時,不需要重新編寫商務邏輯。MVC被獨特的發展起來用於映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化使用者介面的結構中。
2.代碼結構
3.代碼實現
<?php //function.php //控制器調用函數 function C($name, $method){ require_once('libs/Controller/'.$name.'Controller.class.php'); //$testController = new testController(); //$testController->show(); eval('$obj = new '.$name.'Controller(); $obj->'.$method.'();'); } //模型調用函數 function M($name){ require_once('libs/Model/'.$name.'Model.class.php'); eval('$obj = new '.$name.'Model();'); return $obj; } //視圖調用函數 function V($name){ require_once('libs/View/'.$name.'View.class.php'); eval('$obj = new '.$name.'View();'); return $obj; } //過濾非法值 function daddslashes($str){ return (!get_magic_quotes_gpc())?addslashes($str):$str; }?><?php//test.php/*第一步 瀏覽者 -> 調用控制器,對它發出指令第二步 控制器 -> 按指令選取一個合適的模型第三步 模型 -> 按控制器指令取相應資料第四步 控制器 -> 按指令選取相應視圖第五步 視圖 -> 把第三步取到的資料按使用者想要的樣子顯示出來*/require_once('View/testView.class.php');require_once('Model/testModel.class.php');require_once('Controller/testController.class.php');$testController = new testController();$testController->show();?><?php//testController.class.php/*控制器的作用是調用模型,並調用視圖,將模型產生的資料傳遞給視圖,並讓相關視圖去顯示*/ class testController{ function show(){ /*$testModel = new testModel(); $data = $testModel->get(); $testView = new testView(); $testView->display($data);*/ $testModel = M('test'); $data = $testModel->get(); $testView = V('test'); $testView->display($data); } }?><?php//testModel.class.php/*模型的作用是擷取資料並處理,返回資料*/ class testModel{ function get(){ return "hello world"; } }?><?php//testView.class.php/*視圖的作用是將獲得的資料進行組織,美化等,並最終向使用者終端輸出*/ class testView{ function display($data){ echo $data; } }?>
運行結果:
PHP中的MVC
MVC[1]在軟體工程中是一種軟體的架構。從php的角度來講MVC有一些不同。
Model(模型),程式應用功能的實現,程式的邏輯的實現。在PHP中負責資料管理,資料產生。
View(視圖),圖形介面邏輯。在PHP中負責輸出,處理如何調用模板、需要的資源檔。
Controller(控制器),負責轉寄請求,對請求處理。在PHP中根據請求決定調用的視圖及使用的資料。
為什麼使用MVC
MVC的主要作用是為了將代碼分層、分類。
MVC的主要目的是為瞭解決Web開發中分離開發與設計工作,使其工作相對獨立。
在這樣的過程中還發現了其他的一些優點,網站的目錄結構更加清晰,網站更易維護與擴充,可以實現模組的複用。