PHP之简单实现MVC框架

1.概述

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

2.代码结构

3.代码实现

复制代码
<?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
//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
//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
//testModel.class.php
/*
模型的作用是获取数据并处理,返回数据
*/
    class testModel{
        function get(){
            return "hello world";
        }
    }
?>

<?php
//testView.class.php
/*
视图的作用是将获得的数据进行组织,美化等,并最终向用户终端输出
*/
    class testView{
        function display($data){
            echo $data;
        }
    }
?>
相关推荐
步行cgn4 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
niucloud-admin5 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php
ESDWAN6 小时前
企业网络监控应该监测哪些目标?网关、网络节点还是业务系统?
服务器·网络·php
呆呆虫127 小时前
用 orjson 加速 SerpBase 响应解析:基准对比与注意事项
开发语言·php
步行cgn7 小时前
Spring MVC + Thymeleaf 模板解析失败:从 500 错误到页面正常显示
java·spring·mvc
中科三方9 小时前
IPv6检测常见问题:AAAA记录检测不通过是什么原因?
开发语言·php
拥小抱10 小时前
Compose 知识点
android
文章永久免费只为良心10 小时前
Web应用安全与防护_第三章_日志文件包含_从一道 CTFshow 题目讲透「日志投毒型 LFI → RCE」:原理、时序陷阱与全变种攻防手册
android·网络安全·渗透测试·漏洞危害·漏洞描述·日志投毒·红队指南
AIsoft_868910 小时前
学术讲座录音如何整理?录音APP可行吗
android·iphone
云边云科技_云网融合11 小时前
面向汽车零部件制造业场景的解决方案 | 70 秒:一台车下线的时间里,藏着五张网
开发语言·汽车·php