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的十大要点(上)
Feb 04 PHP
基于curl数据采集之正则处理函数get_matches的使用
Apr 28 PHP
PHP往XML中添加节点的方法
Mar 12 PHP
php实现的单一入口应用程序实例分析
Sep 23 PHP
Laravel实现构造函数自动依赖注入的方法
Mar 16 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
Apr 11 PHP
php中static和const关键字用法分析
Dec 07 PHP
PHP简单获取随机数的常用方法小结
Jun 07 PHP
PHP实现会员账号单唯一登录的方法分析
Mar 07 PHP
Laravel多域名下字段验证的方法
Apr 04 PHP
微信推送功能实现方式图文详解
Jul 12 PHP
php依赖注入知识点详解
Sep 23 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/10/09 PHP
WINXP下apache+php4+mysql
2006/11/25 PHP
php Static关键字实用方法
2010/06/04 PHP
php实现基于openssl的加密解密方法
2016/09/30 PHP
php查找字符串中第一个非0的位置截取
2017/02/27 PHP
PHP的简单跳转提示的实现详解
2019/03/14 PHP
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
2010/05/06 Javascript
你必须知道的Javascript知识点之&quot;字面量和对应类型&quot;说明介绍
2013/04/23 Javascript
js获取select选中的option的text示例代码
2013/12/19 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
2014/07/29 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
2015/12/03 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
JS canvas实现画板和签字板功能
2021/02/23 Javascript
python实现图片批量剪切示例
2014/03/25 Python
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
2016/12/14 Python
pandas修改DataFrame列名的方法
2018/04/08 Python
Django 模型类(models.py)的定义详解
2019/07/19 Python
wxPython实现分隔窗口
2019/11/19 Python
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
详解CSS3阴影 box-shadow的使用和技巧总结
2016/12/03 HTML / CSS
英国著名书店:Foyles
2018/12/01 全球购物
Roxy俄罗斯官方网站:冲浪和滑雪板的一切
2020/06/20 全球购物
信息管理应届生求职信
2014/03/07 职场文书
合作协议书
2014/04/23 职场文书
优质服务活动实施方案
2014/05/02 职场文书
幼儿园家长安全责任书
2014/07/22 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
创业计划书之婴幼儿游泳馆
2019/09/11 职场文书
Python之Matplotlib绘制热力图和面积图
2022/04/13 Python