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边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 PHP
PHP5函数小全(分享)
Jun 06 PHP
php中session退出登陆问题
Feb 27 PHP
codeigniter数据库操作函数汇总
Jun 12 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
Jul 10 PHP
Yii配置文件用法详解
Dec 04 PHP
新浪微博OAuth认证和储存的主要过程详解
Mar 27 PHP
PHP随机生成唯一HASH值自定义函数
Apr 20 PHP
帝国CMS留言板回复后发送EMAIL通知客户
Jul 06 PHP
PHP中Laravel 关联查询返回错误id的解决方法
Apr 01 PHP
PHP实现动态添加XML中数据的方法
Mar 30 PHP
php中yii框架实例用法
Dec 22 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中对用户身份认证实现两种方法
2011/06/04 PHP
js post方式传递提交的实现代码
2010/05/31 Javascript
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
js内置对象 学习笔记
2011/08/01 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
AngularJS中如何使用echart插件示例详解
2016/10/26 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
nodejs对mongodb数据库的增加修删该查实例代码
2020/01/05 NodeJs
vue实现购物车的监听
2020/04/20 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
[02:10]2018DOTA2亚洲邀请赛赛前采访-Liquid
2018/04/03 DOTA
Python使用numpy实现BP神经网络
2018/03/10 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
如何用Python合并lmdb文件
2018/07/02 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
Python实现查找二叉搜索树第k大的节点功能示例
2019/01/24 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
2020/10/19 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
css3 box-shadow阴影(外阴影与外发光)图示讲解
2017/08/11 HTML / CSS
利用纯css3实现的文字亮光特效的代码演示
2014/11/27 HTML / CSS
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
特罗佩亚包官方网站:Tropea
2017/01/03 全球购物
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
挑战杯创业计划书的写作指南
2014/01/07 职场文书
运动会800米加油稿
2014/02/22 职场文书
公司贷款承诺书
2014/05/30 职场文书
平面设计专业求职信
2014/08/09 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
李强感恩观后感
2015/06/17 职场文书
2016年第32个教师节致辞
2015/11/26 职场文书
django注册用邮箱发送验证码的实现
2021/04/18 Python
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python