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 相关文章推荐
wiki-shan写的php在线加密的解密程序
Sep 07 PHP
php empty函数 使用说明
Aug 10 PHP
php 获取当前访问的url文件名的方法小结
Feb 08 PHP
php递归实现无限分类生成下拉列表的函数
Aug 08 PHP
php 判断服务器操作系统的类型
Feb 17 PHP
smarty内置函数foreach用法实例
Jan 22 PHP
PHP设计模式之适配器模式代码实例
May 11 PHP
php实现倒计时效果
Dec 19 PHP
PHP中字符串长度的截取用法示例
Jan 12 PHP
php实现的mysqldb读写分离操作类示例
Feb 07 PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 PHP
php提高脚本性能的4个技巧
Aug 18 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
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
2011/10/08 PHP
解析PHP留言本模块主要功能的函数说明(代码可实现)
2013/06/25 PHP
php实现检查文章是否被百度收录
2015/01/27 PHP
Discuz论坛密码与密保加密规则
2016/12/19 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
JS 有名函数表达式全面解析
2010/03/19 Javascript
jquery 滚动条事件简单实例
2013/07/12 Javascript
jquery.ui.draggable中文文档(原文翻译)
2013/11/15 Javascript
js实现div闪烁原理及实现代码
2014/06/24 Javascript
jquery实现点击页面计算点击次数
2015/01/23 Javascript
获取select的value、text值的简单示例(jquery与javascript)
2016/12/07 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
详解Vue 全局引入bass.scss 处理方案
2018/03/26 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
2019/04/28 Javascript
Fetch超时设置与终止请求详解
2019/05/18 Javascript
ES6 Object属性新的写法实例小结
2019/06/25 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
python发腾讯微博代码分享
2014/01/10 Python
Python中创建二维数组
2018/10/17 Python
python变量命名的7条建议
2019/07/04 Python
python  文件的基本操作 菜中菜功能的实例代码
2019/07/17 Python
canvas线条的属性详解
2018/03/27 HTML / CSS
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
预订从美国飞往印度的机票:MyTicketsToIndia
2017/05/19 全球购物
德国受欢迎的旅游和休闲网站:lastminute.de
2019/09/23 全球购物
请编程遍历页面上所有 TextBox 控件并给它赋值为 string.Empty
2015/12/03 面试题
中专毕业生求职简历的自我评价
2013/10/21 职场文书
药学专业大学生个人的自我评价
2013/11/04 职场文书
护理学专业推荐信
2013/12/03 职场文书
成考报名单位证明范本
2014/01/16 职场文书
2014国庆节餐厅促销活动策划方案
2014/09/16 职场文书
pytorch 中nn.Dropout的使用说明
2021/05/20 Python