首頁  >  文章  >  後端開發  >  PHP-MVC模式講解與實例

PHP-MVC模式講解與實例

王林
王林轉載
2019-08-23 17:31:019959瀏覽

 一、 MVC模式流程圖

PHP-MVC模式講解與實例

二、MVC概念

(1)作用

 MVC包含控制器(Controller),模型(Model),視圖(View)。

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

 模型的作用是取得資料並處理回傳資料

 視圖的功能是將取得的資料美化,並向使用者終端輸出

(2)執行過程

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

2.  控制器->  依指令選擇適當的模式

##3.    模型    ->  依指令取資料

#4.  控制器->  依指令選取視圖

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

三、簡單的MVC實例

(1)目錄規劃

PHP-MVC模式講解與實例

(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(模型檔案名稱一樣)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(&#39;/libs/Controller/testController.class.php&#39;);
require_once(&#39;/libs/Model/testModel.class.php&#39;);
require_once(&#39;/libs/View/testView.class.php&#39;);
 
//类的实例化
$testController = new testController();//对象赋值给变量
$testController->show();//调用方法
?>

5.運行結果

PHP-MVC模式講解與實例

四、簡單的MVC實例改進----方法封裝

  1.  封裝一個實例化控制器等的物件與呼叫方法的函數

<?php
 
    //控制器名字和要执行的方法
    function C($name,$method){
        require_once(&#39;/libs/Controller/&#39;.$name.&#39;Controller.class.php&#39;);
        //对象赋值给变量
        // $testController = new testController();
        // $testController->show();
        eval(&#39;$obj = new &#39;.$name.&#39;Controller();$obj->&#39;.$method.&#39;();&#39;);//把字符串转换为可执行的php语句
    }
    //封装一个实例化模型的对象和调用方法的函数
    function M($name){
        require_once(&#39;/libs/Model/&#39;.$name.&#39;Model.class.php&#39;);
        //$testModel = new testModel();
        eval(&#39;$obj = new &#39;.$name.&#39;Model();&#39;);//实例化
        return $obj;
    }
 
    //封装一个实例化视图的对象和调用方法的函数
    function V($name){
        require_once(&#39;/libs/View/&#39;.$name.&#39;View.class.php&#39;);
            //$testView  = new testView();
            eval(&#39;$obj = new &#39;.$name.&#39;View();&#39;);
            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(&#39;function.php&#39;);
 
//允许访问的控制器名和方法名的数组
$controllerAllow=array(&#39;test&#39;,&#39;index&#39;);
$methodAllow =array(&#39;test&#39;,&#39;index&#39;,&#39;show&#39;);
//用get方式接收url中的参数
//过滤输入非法字符  并判断是否在数组里
$controller = in_array($_GET[&#39;controller&#39;],$controllerAllow )? daddslashes($_GET[&#39;controller&#39;]) :&#39;index&#39; ;
$method = in_array($_GET[&#39;method&#39;],$methodAllow) ? daddslashes($_GET[&#39;method&#39;]) :&#39;index&#39;;
//调用控制器和执行方法
C($controller,$method);
 
?>

3.運行結果

瀏覽器存取 http:// localhost:8080/MVC/index.php?controller=test&method=show  顯示hello world

PHP-MVC模式講解與實例

想了解更多PHP相關問題請上PHP中文網:

PHP影片教學

以上是PHP-MVC模式講解與實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除