二、MVC概念
(1)作用
MVC包括控制器(Controller),模型(Model),檢視(View)。
控制器的作用是呼叫模型和 檢視,將模型產生的資料傳遞給檢視,並讓檢視去顯示
模型的作用是獲取資料並處理返回資料
檢視的作用是將取得的資料進行美化,並向使用者終端輸出
(2)執行過程
1. 瀏覽者 -> 呼叫控制器,發出指令
2. 控制器 -> 按指令選擇合適的模型
3. 模型 -> 按指令取資料
4. 控制器 -> 按指令選檢視
5 . 檢視 -> 把取到的資料展示出來
三、簡單的MVC範例
(1)目錄規劃
(2)編寫類檔案
1. testController.class.php 控制器類檔案
命名規則:test(名字)Controller(控制器檔案).class.php ( 類檔案 )
<!-- 首先範例化控制器物件,並呼叫指令方法, 方法裡面範例化模型物件,呼叫取資料方法 併範例化檢視物件,呼叫展示方法 --> <!-- 控制器的方法沒有引數,而其他的就有引數 --> <?php // 類名和檔名相同 class testController{ function show(){ $testModel = new testModel();//按指令選擇一個模型 $data = $testModel -> get();//模型按照指令取資料 //按指令選擇檢視 範例化一個view的物件 $testView = new testView(); //把取到的資料按使用者的樣子顯示出來 $testView -> display($data); } } ?>
2. testModel.class.php 模型類檔案
命名規則:test(模型檔名稱 )Model( 模型檔案).class.php 類檔案
<?php class testModel{ //獲取資料 function get(){ return "hello world"; } } ?>
3. testView.class.php 檢視類檔案
<?php class testView{ //展示資料 function display($data){ echo $data; } } ?>
4. 單一入口檔案
讓他來呼叫控制器,而控制器去呼叫模型和檢視
<?php //引入類檔案 require_once('/libs/Controller/testController.class.php'); require_once('/libs/Model/testModel.class.php'); require_once('/libs/View/testView.class.php'); //類的範例化 $testController = new testController();//物件賦值給變數 $testController->show();//呼叫方法 ?>
5.執行結果
四、簡單的MVC範例改進----方法封裝
1. 封裝一個範例化控制器等的物件和呼叫方法的函數
<?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.'();');//把字串轉換為可執行的php語句 } //封裝一個範例化模型的物件和呼叫方法的函數 function M($name){ require_once('/libs/Model/'.$name.'Model.class.php'); //$testModel = new testModel(); eval('$obj = new '.$name.'Model();');//範例化 return $obj; } //封裝一個範例化檢視的物件和呼叫方法的函數 function V($name){ require_once('/libs/View/'.$name.'View.class.php'); //$testView = new testView(); eval('$obj = new '.$name.'View();'); return $obj; } //為了安全性 ,過濾函數 //addslashes對’,字元進行跳脫 //get_magic_quotes_gpc()當前魔法符號的開啟狀態,開啟返回true, function daddslashes($str){ return (!get_magic_quotes_gpc() )? addslashes($str) : $str; } ?>
2.重新編寫入口檔案index.php
瀏覽器url存取形式 http://......index.php?controller=控制器名&method=方法名
<?php require_once('function.php'); //允許存取的控制器名和方法名的陣列 $controllerAllow=array('test','index'); $methodAllow =array('test','index','show'); //用get方式接收url中的引數 //過濾輸入非法字元 並判斷是否在陣列裡 $controller = in_array($_GET['controller'],$controllerAllow )? daddslashes($_GET['controller']) :'index' ; $method = in_array($_GET['method'],$methodAllow) ? daddslashes($_GET['method']) :'index'; //呼叫控制器和執行方法 C($controller,$method); ?>
3.執行結果
瀏覽器存取 http://localhost:8080/MVC/index.php?controller=test&method=show 顯示hello world
想了解更多PHP相關問題請存取PHP中文網:PHP視訊教學
以上就是PHP——MVC模式講解與範例的詳細內容,更多請關注TW511.COM其它相關文章!