php mvc,PHP MVC模式講解與例項

2021-10-25 21:15:39 字數 3464 閱讀 4975

一、 mvc模式流程圖

二、mvc概念

(1)作用

mvc包括控制器(controller),模型(model),檢視(view)。

控制器的作用是呼叫模型和 檢視,將模型產生的資料傳遞給檢視,並讓檢視去顯示

模型的作用是獲取資料並處理返回資料

檢視的作用是將取得的資料進行美化,並向使用者終端輸出

(2)執行過程

1. 瀏覽者 -> 呼叫控制器,發出指令

2. 控制器 -> 按指令選擇合適的模型

3. 模型 -> 按指令取資料

4. 控制器 -> 按指令選檢視

5 . 檢視 -> 把取到的資料展示出來

三、簡單的mvc例項

(1)目錄規劃

(2)編寫類檔案

1. testcontroller.class.php 控制器類檔案

命名規則:test(名字)controller(控制器檔案).class.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

//引入類檔案

//類的例項化

$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;

//封裝乙個例項化檢視的物件和呼叫方法的函式

//為了安全性 ,過濾函式

//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

講一講抽象工廠模式

1.新建產品族介面 我這裡可以理解為生產乙個產品需要兩個步驟 步驟1 public inte ce iproduct1 步驟2 public inte ce iproduct2 2.新建工廠介面 乙個工廠生產乙個產品都需要這兩個步驟 public inte ce ifactory 3.新建各個產品的...

設計模式課程 設計模式精講 10 1 外觀模式講解

1 課堂講解 1.1 型別 1.2 定義 1.3 適用場景 1.4 優點 1.5 缺點 1.6 相關聯設計模式對比 1 課堂講解 1.1 型別 型別 結構型 1.2 定義 定義 又叫門面模式,提供了乙個統一的介面,用來訪問子系統中的一群介面 外觀模式定義了乙個高層介面,讓子系統更容易使用 1.3 適...

設計模式精講

c 實現設計模式 1 設計模式簡介 c 實現設計模式 2 模板方法 c 實現設計模式 3 strategy模式 c 實現設計模式 4 觀察者模式 c 實現設計模式 5 裝飾模式 c 實現設計模式 6 橋模式 c 實現設計模式 7 工廠模式 c 實現設計模式 8 抽象工廠模式 c 實現設計模式 9 原...