dmz社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7672|回复: 143

PHP之简单实现MVC框架

  [复制链接]
  • TA的每日心情

    2024-11-19 20:46
  • 签到天数: 244 天

    [LV.8]以坛为家I

    4434

    主题

    1459

    帖子

    1万

    积分

    会|员

    Rank: 9Rank: 9Rank: 9

    积分
    10839
    发表于 2018-12-5 16:52:00 | 显示全部楼层 |阅读模式

    本站资源全部免费,回复即可查看下载地址!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    1.概述
      MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
    2.代码结构
    490781-20151130084723952-1621629694.png

    490781-20151130084746530-873431195.png
    3.代码实现
    [PHP] 纯文本查看 复制代码
    <?php
            //function.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.'();');
        }
     
        //模型调用函数
        function M($name){
            require_once('libs/Model/'.$name.'Model.class.php');
            eval('$obj = new '.$name.'Model();');
            return $obj;
        }
     
        //视图调用函数
        function V($name){
            require_once('libs/View/'.$name.'View.class.php');
            eval('$obj = new '.$name.'View();');
            return $obj;
        }
     
        //过滤非法值
        function daddslashes($str){
            return (!get_magic_quotes_gpc())?addslashes($str):$str;
        }
    ?>
    [PHP] 纯文本查看 复制代码
    <?php
    //test.php
    /*
    第一步 浏览者 -> 调用控制器,对它发出指令
    第二步 控制器 -> 按指令选取一个合适的模型
    第三步 模型 -> 按控制器指令取相应数据
    第四步 控制器 -> 按指令选取相应视图
    第五步 视图 -> 把第三步取到的数据按用户想要的样子显示出来
    */
     
    require_once('View/testView.class.php');
    require_once('Model/testModel.class.php');
    require_once('Controller/testController.class.php');
     
    $testController = new testController();
    $testController->show();
    ?>

    [PHP] 纯文本查看 复制代码
    <?php
    //testController.class.php
    /*
    控制器的作用是调用模型,并调用视图,将模型产生的数据传递给视图,并让相关视图去显示
    */
        class testController{
            function show(){
                /*$testModel = new testModel();
                $data = $testModel->get();
                $testView = new testView();
                $testView->display($data);*/
                $testModel = M('test');
                $data = $testModel->get();
                $testView = V('test');
                $testView->display($data);
            }
        }
    ?>

    [PHP] 纯文本查看 复制代码
    <?php
    //testModel.class.php
    /*
    模型的作用是获取数据并处理,返回数据
    */
        class testModel{
            function get(){
                return "hello world";
            }
        }
    ?>

    [PHP] 纯文本查看 复制代码
    <?php
    //testView.class.php
    /*
    视图的作用是将获得的数据进行组织,美化等,并最终向用户终端输出
    */
        class testView{
            function display($data){
                echo $data;
            }
        }
    ?>

    运行结果:
    490781-20151130085710562-548108070.png


    如果本案例仍然不能让您完全理解MVC的概念可以查看此教程:https://www.dmzshequ.com/thread-2334-1-1.html


    回复

    使用道具 举报

    该用户从未签到

    35

    主题

    7882

    帖子

    1006

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    1006

    发表于 2018-12-5 23:10:38 | 显示全部楼层
    学习了,谢谢分享、、、
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    42

    主题

    7760

    帖子

    928

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    928

    发表于 2018-12-6 14:06:36 | 显示全部楼层
    过来看看的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17

    主题

    7860

    帖子

    935

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    935

    发表于 2018-12-6 20:25:42 | 显示全部楼层
    看帖回帖是美德!:lol
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    27

    主题

    7861

    帖子

    1048

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    1048

    发表于 2018-12-7 08:27:46 | 显示全部楼层
    有竞争才有进步嘛
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    24

    主题

    7712

    帖子

    941

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    941

    发表于 2018-12-8 12:00:01 | 显示全部楼层
    没看完~~~~~~ 先顶,好同志
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    40

    主题

    7892

    帖子

    1017

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    1017

    发表于 2018-12-9 01:09:09 | 显示全部楼层
    支持一下:lol
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    24

    主题

    7796

    帖子

    953

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    953

    发表于 2018-12-10 14:42:08 | 显示全部楼层
    过来看看的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    23

    主题

    7814

    帖子

    1023

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    1023

    发表于 2018-12-11 06:05:44 | 显示全部楼层
    这是什么东东啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    42

    主题

    7760

    帖子

    928

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    928

    发表于 2018-12-13 00:46:13 | 显示全部楼层
    路过,支持一下啦
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|小黑屋|本站代理|dmz社区

    GMT+8, 2025-2-2 06:56 , Processed in 0.269336 second(s), 44 queries .

    Powered by Discuz! X3.4 Licensed

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表