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 13 PHP
php中用数组的方法设置cookies
Apr 21 PHP
PHP IE中下载附件问题解决方法
Jan 07 PHP
destoon安装出现Internal Server Error的解决方法
Jun 21 PHP
PHP+Ajax+JS实现多图上传
May 07 PHP
PHP Filter过滤器全面解析
Aug 09 PHP
总结PHP中数值计算的注意事项
Aug 14 PHP
详解yii2实现分库分表的方案与思路
Feb 03 PHP
Laravel框架实现的批量删除功能示例
Jan 16 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
Feb 16 PHP
PHP whois查询类定义与用法示例
Apr 03 PHP
php转换上传word文件为PDF的方法【基于COM组件】
Jun 10 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
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
php反射类ReflectionClass用法分析
2016/05/12 PHP
PHP+ajax实现二级联动菜单功能示例
2018/08/10 PHP
PHP+百度AI OCR文字识别实现了图片的文字识别功能
2019/05/08 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
一个javascript图片阅览组件
2010/11/09 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
2013/04/17 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
2015/12/03 Javascript
JS实现支持Ajax验证的表单插件
2016/03/24 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
基于Jquery插件Uploadify实现实时显示进度条上传图片
2020/03/26 Javascript
原生js实现class的添加和删除简单代码
2016/07/12 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
JS实现元素上下左右移动效果
2017/10/18 Javascript
AngularJS集合数据遍历显示的实例
2017/12/27 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
2018/06/11 Javascript
vue监听对象及对象属性问题
2018/08/20 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
[38:32]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第二局
2016/02/26 DOTA
python爬虫框架talonspider简单介绍
2017/06/09 Python
Python这样操作能存储100多万行的xlsx文件
2019/04/16 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
Python常用断言函数实例汇总
2020/11/30 Python
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
教育系毕业生中文求职信范文
2013/10/06 职场文书
医药学专业大学生职业生涯规划书论文
2014/01/21 职场文书
《红军不怕远征难》教学反思
2014/04/14 职场文书
应聘销售主管的求职信
2014/04/26 职场文书
生态养殖创业计划书
2014/05/06 职场文书
食品安全汇报材料
2014/08/18 职场文书
工会趣味活动方案
2014/08/18 职场文书
Python如何加载模型并查看网络
2022/07/15 Python