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中通过ADO调用Asscess数据库和COM程序
Oct 09 PHP
Smarty模板快速入门
Jan 04 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
Jan 07 PHP
PHP加密解密类实例分析
Apr 20 PHP
php结合正则批量抓取网页中邮箱地址
May 19 PHP
php截取视频指定帧为图片
May 16 PHP
PHP创建多级目录的两种方法
Oct 28 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
Sep 16 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
Sep 26 PHP
PHP面向对象程序设计之对象的遍历操作示例
Jun 12 PHP
laravel通用化的CURD的实现
Dec 13 PHP
PHP中类与对象功能、用法实例解读
Mar 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
PHP+ACCESS 文章管理程序代码
2010/06/21 PHP
利用PHP实现智能文件类型检测的实现代码
2011/08/02 PHP
php日期转时间戳,指定日期转换成时间戳
2012/07/17 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
2014/08/20 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
JavaScript 继承详解(一)
2009/07/13 Javascript
AngularJS学习笔记之TodoMVC的分析
2015/02/22 Javascript
javascript模拟C#格式化字符串
2015/08/26 Javascript
jQuery实现简单下拉导航效果
2015/09/07 Javascript
Three.js学习之网格
2016/08/10 Javascript
BootStrap下拉框在firefox浏览器界面不友好的解决方案
2016/08/18 Javascript
Angularjs中的页面访问权限怎么设置
2016/11/11 Javascript
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
2016/11/29 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
2017/08/23 Javascript
使用ef6创建oracle数据库的实体模型遇到的问题及解决方案
2017/11/09 Javascript
Node.js 使用AngularJS的方法示例
2018/05/11 Javascript
angular4 获取wifi列表中文显示乱码问题的解决
2018/10/20 Javascript
jQuery实现ajax的嵌套请求案例分析
2019/02/16 jQuery
Vue源码学习之关于对Array的数据侦听实现
2019/04/23 Javascript
js+canvas实现两张图片合并成一张图片的方法
2019/11/01 Javascript
在vue中使用vant TreeSelect分类选择组件操作
2020/11/02 Javascript
简单理解Python中的装饰器
2015/07/31 Python
使用paramiko远程执行命令、下发文件的实例
2017/10/01 Python
用Python实现KNN分类算法
2017/12/22 Python
python实现自动发送邮件
2018/06/20 Python
Python多版本开发环境管理工具介绍
2019/07/03 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
通过实例解析python and和or使用方法
2020/11/14 Python
精彩自我鉴定
2014/01/16 职场文书
药店营业员岗位职责
2015/04/14 职场文书
电影红河谷观后感
2015/06/11 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书
pytorch 实现多个Dataloader同时训练
2021/05/29 Python
python游戏开发之pygame实现接球小游戏
2022/04/22 Python