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 和 MySQL 时区的一点总结
Mar 26 PHP
PHP file_get_contents 函数超时的几种解决方法
Jul 30 PHP
php 静态变量与自定义常量的使用方法
Jan 26 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
Jun 25 PHP
PHP对象递归引用造成内存泄漏分析
Aug 28 PHP
php语言中使用json的技巧及json的实现代码详解
Oct 27 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
Apr 28 PHP
php+mysql+jquery实现日历签到功能
Feb 27 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
Mar 25 PHP
Laravel框架中缓存的使用方法分析
Sep 06 PHP
php+mysql实现的无限分类方法类定义与使用示例
May 27 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
第1次亲密接触PHP5(2)
2006/10/09 PHP
php中的常用魔术方法总结
2013/08/02 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
jQuery学习笔记之入门
2016/12/14 Javascript
微信小程序 chooseImage选择图片或者拍照
2017/04/07 Javascript
js禁止表单重复提交
2017/08/29 Javascript
Mac下通过brew安装指定版本的nodejs教程
2018/05/17 NodeJs
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
详解JS中统计函数执行次数与执行时间
2018/09/04 Javascript
nodejs 使用http进行post或get请求的实例(携带cookie)
2019/01/03 NodeJs
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
[48:32]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs VG
2018/04/01 DOTA
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
采用python实现简单QQ单用户机器人的方法
2014/07/03 Python
python更新列表的方法
2015/07/28 Python
Python学习小技巧之列表项的排序
2017/05/20 Python
Python使用pickle模块存储数据报错解决示例代码
2018/01/26 Python
python实现聊天小程序
2018/03/13 Python
Python面向对象程序设计之继承与多继承用法分析
2018/07/13 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
python如何实现复制目录到指定目录
2020/02/13 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
keras:model.compile损失函数的用法
2020/07/01 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
异常和异常类的概念
2014/09/12 面试题
毕业生医学检验求职信
2013/10/16 职场文书
建筑工程毕业生自我鉴定
2014/01/14 职场文书
领导党性分析材料
2014/02/15 职场文书
战略合作协议书范本
2014/04/18 职场文书
银行爱岗敬业演讲稿
2014/05/05 职场文书
践行三严三实心得体会(2016推荐篇)
2016/01/06 职场文书