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实现小型站点广告管理
Oct 09 PHP
PHP 执行系统外部命令 system() exec() passthru()
Aug 11 PHP
PHP设计模式之装饰者模式
Feb 29 PHP
wamp安装后自定义配置的方法
Aug 23 PHP
PHP里8个鲜为人知的安全函数分析
Dec 09 PHP
php判断一个数组是否为有序的方法
Mar 27 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
php微信高级接口群发 多客服
Jun 23 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 PHP
搜索附近的人PHP实现代码
Feb 11 PHP
php实现每日签到功能
Nov 29 PHP
PHP文件操作简单介绍及函数汇总
Dec 11 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
图象函数中的中文显示
2006/10/09 PHP
Smarty foreach控制循环次数的实现详解
2013/07/03 PHP
PHP数据过滤的方法
2013/10/30 PHP
php常用数学函数汇总
2014/11/21 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
PHP中实现crontab代码分享
2015/03/26 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
php类自动加载器实现方法
2015/07/28 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
2018/05/12 PHP
Javascript 陷阱 window全局对象
2008/11/26 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
Javascript this 关键字 详解
2014/10/22 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
Node.js使用NodeMailer发送邮件实例代码
2017/03/06 Javascript
原生js实现选项卡功能
2017/03/08 Javascript
详解ES6中的代理模式——Proxy
2018/01/08 Javascript
浅谈Vue.js路由管理器 Vue Router
2018/08/16 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
2019/11/17 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
从源码解析Python的Flask框架中request对象的用法
2016/06/02 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
关于Tensorflow使用CPU报错的解决方式
2020/02/05 Python
HTML5中语义化 b 和 i 标签
2008/10/17 HTML / CSS
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
成品仓管员岗位职责
2013/12/11 职场文书
咖啡蛋糕店创业计划书
2014/01/28 职场文书
职业女性的职业规划
2014/03/04 职场文书
装配出错检讨书
2014/09/23 职场文书
物业管理交接协议书
2016/03/24 职场文书
如何用Laravel包含你自己的帮助函数
2021/05/27 PHP
Python3中最常用的5种线程锁实例总结
2021/07/07 Python
JavaScript实现音乐播放器
2022/08/14 Javascript