PHP简单的MVC框架实现方法


Posted in PHP onDecember 01, 2015

在PHP中使用MVC越来越流行了,特别是在一些开源的框架当中。

1.概述

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

2.代码结构

PHP简单的MVC框架实现方法

PHP简单的MVC框架实现方法

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;
    }
  }
?>

 运行结果:

PHP简单的MVC框架实现方法

PHP中的MVC

MVC[1]在软件工程中是一种软件的架构。从php的角度来讲MVC有一些不同。

Model(模型),程序应用功能的实现,程序的逻辑的实现。在PHP中负责数据管理,数据生成。

View(视图),图形界面逻辑。在PHP中负责输出,处理如何调用模板、需要的资源文件。

Controller(控制器),负责转发请求,对请求处理。在PHP中根据请求决定调用的视图及使用的数据。

为什么使用MVC

MVC的主要作用是为了将代码分层、分类。

MVC的主要目的是为了解决Web开发中分离开发与设计工作,使其工作相对独立。

在这样的过程中还发现了其他的一些优点,网站的目录结构更加清晰,网站更易维护与扩展,可以实现模块的复用。

PHP 相关文章推荐
php学习之 认清变量的作用范围
Jan 26 PHP
PHP set_time_limit(0)长连接的实现分析
Mar 02 PHP
php数组添加元素方法小结
Dec 20 PHP
PHP 生成N个不重复的随机数
Jan 21 PHP
分享PHP函数实现数字与文字分页代码
Jul 28 PHP
thinkphp3.2点击刷新生成验证码
Feb 16 PHP
php cookie 详解使用实例
Nov 03 PHP
PHP开发中csrf攻击的简单演示和防范
May 07 PHP
利用PHP实现开心消消乐的算法示例
Oct 12 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
Jun 13 PHP
Laravel5框架自定义错误页面配置操作示例
Apr 17 PHP
apache集成php7.3.5的详细步骤
Jun 20 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
Dec 01 #PHP
基于php实现七牛抓取远程图片
Dec 01 #PHP
使用Huagepage和PGO来提升PHP7的执行性能
Nov 30 #PHP
深入解析PHP中foreach语句控制数组循环的用法
Nov 30 #PHP
简单了解PHP编程中数组的指针的使用
Nov 30 #PHP
PHP 微信支付类 demo
Nov 30 #PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
Nov 30 #PHP
You might like
模仿OSO的论坛(五)
2006/10/09 PHP
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
浅析PHP绘图技术
2013/07/03 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
php简单随机字符串生成方法示例
2017/04/19 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
JScript中的undefined和&quot;undefined&quot;的区别
2007/03/08 Javascript
script不刷新页面的联动前后代码
2013/09/18 Javascript
浅谈Javascript如何实现匀速运动
2014/12/19 Javascript
使用Jquery实现每日签到功能
2015/04/03 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
2015/08/22 Javascript
JavaScript 性能优化小结
2015/10/12 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
Node.js+Express+MySql实现用户登录注册功能
2017/07/10 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
vue-router的钩子函数用法实例分析
2019/10/26 Javascript
[01:52]2020年DOTA2 TI10夏季活动预告片
2020/07/15 DOTA
python的类方法和静态方法
2014/12/13 Python
一文总结学习Python的14张思维导图
2017/10/17 Python
win7+Python3.5下scrapy的安装方法
2018/07/31 Python
对Python 内建函数和保留字详解
2018/10/15 Python
使用python接入微信聊天机器人
2020/03/31 Python
pycharm中显示CSS提示的知识点总结
2019/07/29 Python
Python实现大数据收集至excel的思路详解
2020/01/03 Python
日本航空官方网站:JAL
2019/06/19 全球购物
CAT鞋加拿大官网:CAT Footwear加拿大
2020/08/05 全球购物
家居装修公司创业计划书范文
2014/03/20 职场文书
应届毕业生求职信范文
2014/05/08 职场文书
2014年“四风”问题个人整改措施
2014/09/17 职场文书
上课不认真检讨书
2014/09/17 职场文书
Django一小时写出账号密码管理系统
2021/04/29 Python
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript