有很長一段時間沒有更新博客了,近一段時間開始重新梳理知識點和寫博客了,新的博客地址:歡迎訪問。
MVC:model view controller(模型,視圖,控制器)
- 視圖:我們能直觀看到的web界面
- 模型:按要求從數據庫取出數據
- 控制器:向系統發出指令的工具和幫手
MVC(3 個層)的 3 個優勢:
(1)各司其職,互不干擾
(2)有利於開發中的分工
(3)有利於代碼的重用
Demo:
- 第一步:瀏覽者->調用控制器,對他發出指令
- 第二步:控制器->按指令選取一個合適的模型
- 第三步:模型->按控制器指令取相應數據
- 第四步:控制器->按指令選取相應視圖
- 第五步:視圖->把第三步取到的數據按用戶想要的樣子顯示出來
test.php
<?php
require_once("testController.class.php");
require_once("testModel.class.php");
require_once("testView.class.php");
$testController = new testController();//控制器實例化
$testController->show();//調用函數
?>
testController.class.php
控制器的作用是調用模型,並調用視圖,將模型產生的數據傳遞給視圖,並讓相關視圖去顯示
<?php
class testController{
function show(){
$testModel = new testModel();
$data = $testModel->get();//取到數據,暫存到$data中
$testView = new testView();//創建一個視圖實例
$testView->display($data);
}
}
?>
testModel.class.php
模型的作用是獲取數據並處理、返回數據
<?php
class testModel{
function get(){
return "hello world";
}
}
?>
testView.class.php
視圖的作用是將取得的數據進行組織、美化等,並最終向用戶終端輸出
<?php
class testView{
function display($data){
echo $data;
}
}
?>
單一入口機制
單一入口機制:單一入口指在一個web應用程序中,所有的請求都是指向一個腳本文件,例如我們經常看到某一個網站所有的頁面都是index.php?xxx這樣的形式。所有對使用程序的訪問都是必須通過這個入口。
Demo:
index.php
<?php
//url形式 index.php?controller=控制器名&method=方法名
//http://localhost/mvc/test/index.php?controller=test&method=show
require_once('function.php');
$controller = $_GET['controller'];
$method = $_GET['method'];
//echo $controller;
C($controller, $method);//調用控制器函數
?>
function.php
<?php
/*
eval()函數調用簡單但是不安全
eval('$obj = new '.$name.'Model()');
可用下面代碼代替:
$model = $name.'Model';
$obj = new $Model();
*/
//控制器調用函數
function C($name, $method){//兩個參數分別表示控制器名稱和要執行的函數名稱
require_once($name.'Controller.class.php');
eval('$obj = new '.$name.'Controller();$obj->'.$method.'();');//eval函數用來將字符串轉化爲可執行的代碼
}
//模型調用函數
function M($name){//參數是模型文件的名稱
require_once($name.'Model.class.php');
eval('$obj = new '.$name.'Model();');
return $obj;
}
//視圖調用函數
function V($name){//參數是視圖文件的名稱
require_once($name.'View.class.php');
eval('$obj = new '.$name.'View();');//視圖類實例化
return $obj;
}
?>
testController.class.php
這裏有了function.php,我們就可以使用模型調用函數來實例化模型
<?php
class testController{
function show(){
$testModel = M("test");
$data = $testModel->get();//取到數據,暫存到$data中
$testView = V("test");//創建一個視圖實例
$testView->display($data);
}
}
?>