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 相关文章推荐
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
php INI配置文件的解析实现分析
Jan 04 PHP
基于Discuz security.inc.php代码的深入分析
Jun 03 PHP
win7下memCache的安装过程(具体操作步骤)
Jun 28 PHP
PHP中的reflection反射机制测试例子
Aug 05 PHP
php获取指定日期之间的各个周和月的起止时间
Nov 24 PHP
php实现俄罗斯乘法实例
Mar 07 PHP
php获取、检查类名、函数名、方法名的函数方法
Jun 25 PHP
Zend Framework基本页面布局分析
Mar 19 PHP
PHP获取用户客户端真实IP的解决方案
Oct 10 PHP
php 从一个数组中随机的取出若干个不同的数实例
Dec 31 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 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
4.与数据库的连接
2006/10/09 PHP
php实现读取内存顺序号
2015/03/29 PHP
PHP CodeIgniter框架的工作原理研究
2015/03/30 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
2015/08/16 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
2015/10/10 PHP
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
php登录超时检测功能实例详解
2017/03/21 PHP
解决laravel session失效的问题
2019/10/14 PHP
jQuery判断checkbox是否选中的小例子
2013/12/02 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
jquery中$each()方法的使用指南
2015/04/30 Javascript
js代码实现随机颜色的小方块
2015/07/30 Javascript
JavaScript语言精粹经典实例(整理篇)
2016/06/07 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
JavaScript面试题大全(推荐)
2016/09/22 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
深入理解JS异步编程-Promise
2019/06/03 Javascript
async/await让异步操作同步执行的方法详解
2019/11/01 Javascript
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
vue界面发送表情的实现代码
2020/09/11 Javascript
nodejs处理tcp连接的核心流程
2021/02/26 NodeJs
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
使用相同的Apache实例来运行Django和Media文件
2015/07/22 Python
python脚本替换指定行实现步骤
2017/07/11 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
为什么说Ruby是一种真正的面向对象程序设计语言
2012/10/30 面试题
医学生实习自我鉴定
2013/09/27 职场文书
护士自荐信
2013/10/25 职场文书
财务助理岗位职责范本
2014/10/09 职场文书
《用字母表示数》教学反思
2016/02/17 职场文书
《文化苦旅》读后感:阅读,让人诗意地栖居在大地上
2019/12/24 职场文书
Go语言使用select{}阻塞main函数介绍
2021/04/25 Golang