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 相关文章推荐
PHP6 mysql连接方式说明
Feb 09 PHP
php urlencode()与urldecode()函数字符编码原理详解
Dec 06 PHP
PHP多进程编程实例
Oct 15 PHP
再推荐十款免费的php开发工具
Nov 09 PHP
PHP实现的构造sql语句类实例
Feb 03 PHP
24条货真价实的PHP代码优化技巧
Jul 28 PHP
PHP类相关知识点实例总结
Sep 28 PHP
浅谈PHP发送HTTP请求的几种方式
Jul 25 PHP
php使用 readfile() 函数设置文件大小大小的方法
Aug 11 PHP
PHP与以太坊交互详解
Aug 24 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
Jun 08 PHP
Laravel中正确地返回HTTP状态码方法示例
Sep 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
香妃
2021/03/03 冲泡冲煮
PHP+SQL 注入攻击的技术实现以及预防办法
2010/12/29 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
2014/07/28 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
详细解读PHP的Yii框架中登陆功能的实现
2015/08/21 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
php使用curl详细解析及问题汇总
2016/08/11 PHP
js 创建书签小工具之理论
2011/02/25 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
2013/12/19 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
jQuery Chart图表制作组件Highcharts用法详解
2016/06/01 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
浅谈angularJS的$watch失效问题的解决方案
2017/08/11 Javascript
javaScript中&quot;==&quot;和&quot;===&quot;的区别详解
2018/03/16 Javascript
Angularjs实现多图片上传预览功能
2018/07/18 Javascript
NodeJS 实现多语言的示例代码
2018/09/11 NodeJs
微信小程序云开发之使用云函数
2019/05/17 Javascript
[02:36]DOTA2上海特锦赛 回忆电竞生涯的重要瞬间
2016/03/25 DOTA
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
python pandas获取csv指定行 列的操作方法
2019/07/12 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
python带参数打包exe及调用方式
2019/12/21 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
python 从list中随机取值的方法
2020/11/16 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
Python使用openpyxl复制整张sheet
2021/03/24 Python
售后服务经理岗位职责
2014/02/25 职场文书
长城英文导游词
2015/01/30 职场文书
环卫个人总结
2015/03/03 职场文书
创先争优活动个人总结
2015/03/04 职场文书
幼儿园百日安全活动总结
2015/05/07 职场文书
python中pycryto实现数据加密
2022/04/29 Python