• 技术文章 >后端开发 >php教程

    PHP——MVC模式讲解与实例

    王林王林2019-08-23 17:31:01转载5882
    一、 MVC模式流程图

    20190321174858211.png

    二、MVC概念

    (1)作用

    MVC包括控制器(Controller),模型(Model),视图(View)。

    控制器的作用是调用模型和 视图,将模型产生的数据传递给视图,并让视图去显示

    模型的作用是获取数据并处理返回数据

    视图的作用是将取得的数据进行美化,并向用户终端输出

    (2)执行过程

    1. 浏览者 -> 调用控制器,发出指令

    2. 控制器 -> 按指令选择合适的模型

    3. 模型 -> 按指令取数据

    4. 控制器 -> 按指令选视图

    5 . 视图 -> 把取到的数据展示出来

    三、简单的MVC实例

    (1)目录规划

    20190321200614451.png

    (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.运行结果

    20190321202052335.png

    四、简单的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

    20190321202550341.png

    想了解更多PHP相关问题请访问PHP中文网:PHP视频教程

    以上就是PHP——MVC模式讲解与实例的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除
    专题推荐:MVC
    上一篇:PHP实现数据分页显示详细操作 下一篇:PHP——thinkphp5的详解介绍与使用
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• SpringMVC是什么• springmvc常用5种注解• springmvc常用注解• wordpress是mvc架构吗
    1/1

    PHP中文网