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 文件缓存的性能测试
Apr 25 PHP
php 广告调用类代码(支持Flash调用)
Aug 11 PHP
PHP删除HTMl标签的三种解决方法
Jun 30 PHP
Yii使用CLinkPager分页实例详解
Jul 23 PHP
PHP中iconv函数转码时截断字符问题的解决方法
Jan 21 PHP
php实现约瑟夫问题的方法小结
Mar 23 PHP
PHP编程中尝试程序并发的几种方式总结
Mar 21 PHP
PHP+MYSQL实现读写分离简单实战
Mar 13 PHP
php中访问修饰符的知识点总结
Jan 27 PHP
Laravel 类和接口注入相关的代码
Oct 15 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
php libevent 功能与使用方法详解
Mar 04 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
2006/12/14 PHP
php缩小png图片不损失透明色的解决方法
2013/12/25 PHP
php实现爬取和分析知乎用户数据
2016/01/26 PHP
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
javascript处理table表格的代码
2010/12/06 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
2013/05/17 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
javascript动画之磁性吸附效果篇
2016/12/09 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(2)
2017/02/20 Javascript
angularjs+bootstrap实现自定义分页的实例代码
2017/06/19 Javascript
基于JavaScript伪随机正态分布代码实例
2019/11/07 Javascript
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
python中的多线程实例教程
2014/08/27 Python
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
python获取外网ip地址的方法总结
2015/07/02 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
python读csv文件时指定行为表头或无表头的方法
2019/06/26 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
Flask中endpoint的理解(小结)
2019/12/11 Python
对tensorflow 中tile函数的使用详解
2020/02/07 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
Janie and Jack美国官网:GAP旗下的高档童装品牌
2019/09/09 全球购物
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
世界上最大的艺术社区:SAA
2020/12/30 全球购物
新年联欢会主持词
2014/03/27 职场文书
安全协议书范本
2014/04/21 职场文书
会员活动策划方案
2014/08/19 职场文书
关于拾金不昧的感谢信
2015/01/21 职场文书
讲文明倡议书
2015/04/29 职场文书
教师病假条范文
2015/08/17 职场文书