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 相关文章推荐
Could not load type System.ServiceModel.Activation.HttpModule解决办法
Dec 29 PHP
如何用php生成扭曲及旋转的验证码图片
Jun 07 PHP
PHP 关于访问控制的和运算符优先级介绍
Jul 08 PHP
php调用google接口生成二维码示例
Apr 28 PHP
php按百分比生成缩略图的代码分享
May 10 PHP
php实现最简单的MVC框架实例教程
Sep 08 PHP
yii的CURD操作实例详解
Dec 04 PHP
smarty模板引擎从php中获取数据的方法
Jan 22 PHP
PHP获取昨天、今天及明天日期的方法
Feb 03 PHP
PHP使用FFmpeg获取视频播放总时长与码率等信息
Sep 13 PHP
PHP中error_reporting函数用法详细介绍
Jun 11 PHP
PHP FileSystem 文件系统常用api整理总结
Jul 12 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中的strpos使用示例
2014/02/27 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
Laravel框架实现的rbac权限管理操作示例
2019/01/16 PHP
JavaScript 学习笔记二 字符串拼接
2010/03/28 Javascript
Jquery插件之多图片异步上传
2010/10/20 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
2014/10/17 Javascript
介绍一个简单的JavaScript类框架
2015/06/24 Javascript
jquery ajax 如何向jsp提交表单数据
2015/08/23 Javascript
AngularJS基础 ng-show 指令简单示例
2016/08/03 Javascript
JSONP跨域请求
2017/03/02 Javascript
create-react-app构建项目慢的解决方法
2018/03/14 Javascript
通过jquery的ajax请求本地的json文件方法
2018/08/08 jQuery
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
2018/08/20 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
javascript解析json格式的数据方法详解
2020/08/07 Javascript
Python使用sftp实现上传和下载功能(实例代码)
2017/03/14 Python
Python Socket编程详细介绍
2017/03/23 Python
python 统计列表中不同元素的数量方法
2018/06/29 Python
python中pip的安装与使用教程
2018/08/10 Python
python实现支付宝转账接口
2019/05/07 Python
简单了解django缓存方式及配置
2019/07/19 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
Python字符串中添加、插入特定字符的方法
2019/09/10 Python
django 实现celery动态设置周期任务执行时间
2019/11/19 Python
在notepad++中实现直接运行python代码
2019/12/18 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
学习雷锋精神演讲稿
2014/05/10 职场文书
访谈节目策划方案
2014/05/15 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书
道歉短信大全
2015/05/12 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
创业计划书之闲置物品置换中心
2019/12/25 职场文书