1. 程式人生 > >PHP中MVC有關的請求分發器原理(前端控制器)原理

PHP中MVC有關的請求分發器原理(前端控制器)原理

MVC中的請求分發器,說白了就是前端的控制器即,做一個控制器,用作於瀏覽器傳送請求時候反饋資料的控制器,例如:

index.php此檔案整合了控制器和模型類。目的是在很多控制器的共性基礎之上,總結抽離,構成一個更為簡潔的形式,前提是請求中必須都帶上“控制器資訊”.每個請求(連結、提交)都應該至少帶有2個資訊,?c=控制器名&a=動作名(函式方法名字),如果沒有帶,則會使用預設的控制器和方法.

<?php 
// 檔案命名為index.php
require ‘基礎控制器類’;
require ‘基礎模型類’;  //有則載入,無就不用載入

$ctrler=!empty($_GET['a'])?$_GET['a']:'預設的控制器/模型器 名字';
$ctrler_model_name=$ctrler.'model'; //模型檔名字  

//$ctrler為控制器的名字,$_GET['a'] 為從請求端發過來的引數值 在請求端那裡提前加好對應的控制器名字

$ctrler_name=$ctrler.'ctrler';//給控制器的名字補全  下方例項化物件的時候用得到

require './'.$ctrler.'ctrler.class.php';//動態載入控制器 此處我預設每個控制器或者模型器的字尾為'.class.php' 
//然後用字串把它們連線起來 當請求傳送過來的時候 就會自動呼叫這個控制器的名字
require './'.$ctrler_model_name.'.class.php'; // 動態載入模型器 MVC的模式就是控制器根據請求來決定呼叫什麼資料顯示到view前端頁面




//當模型類和控制器類都載入成功就可以 例項化物件來根據傳送過來的請求,分發控制顯示資料

$obj=new $ctrler_name();//因為資料是用控制器呼叫才顯示的,所以需要對控制器中的物件進行例項化並進行函式的動態呼叫(此語句 ,涉及到可變類,可變函式)
$action = $ctrler.'Action';
// 預設在這個對應的控制器中 所有的函式名都是以Action結尾 例如:deleteAction();
$obj->$action();// 動態函式

這樣就完成了 一個請求分發器

?>