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设计模式之简单工厂模式详解
Sep 04 PHP
PHP中的替代语法介绍
Jan 09 PHP
Laravel 5框架学习之数据库迁移(Migrations)
Apr 08 PHP
PHP微信开发之模板消息回复
Jun 24 PHP
PHP页面间传递值和保持值的方法
Aug 24 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
Sep 23 PHP
Yii2下session跨域名共存的解决方案
Feb 04 PHP
php正则判断是否为合法身份证号的方法
Mar 16 PHP
laravel实现批量更新多条记录的方法示例
Oct 22 PHP
微信公众号开发之获取位置信息php代码
Jun 13 PHP
PHP经典设计模式之依赖注入定义与用法详解
May 21 PHP
PHP数组访问常用方法解析
Sep 05 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/11/23 PHP
php设计模式小结
2013/02/15 PHP
php 根据url自动生成缩略图并处理高并发问题
2014/01/23 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
2014/11/22 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
2011/07/31 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
Jquery中ajax方法data参数的用法小结
2014/02/12 Javascript
js实现连个数字相加而不是拼接的方法
2014/02/23 Javascript
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
详解前后端分离之VueJS前端
2017/05/24 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
Javascript var变量删除原理及实现
2020/08/26 Javascript
python 字符串格式化代码
2013/03/17 Python
Django数据库连接丢失问题的解决方法
2018/12/29 Python
Python使用pyshp库读取shapefile信息的方法
2018/12/29 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
Python使用微信接入图灵机器人过程解析
2019/11/04 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
python boto和boto3操作bucket的示例
2020/10/30 Python
python 30行代码实现蚂蚁森林自动偷能量
2021/02/08 Python
天游软件面试
2013/11/23 面试题
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/01/13 面试题
2014年清明节寄语
2014/04/03 职场文书
人事任命书范文
2014/06/04 职场文书
初级党校心得体会
2014/09/11 职场文书
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
老人节标语大全
2014/10/08 职场文书
单位租房协议书范本
2014/12/04 职场文书
运动会宣传稿100字
2015/07/23 职场文书
django上传文件的三种方式
2021/04/29 Python
OpenCV实现常见的四种图像几何变换
2022/04/01 Python
Win11 Dev 预览版25174.1000发布 (附更新修复内容汇总)
2022/08/05 数码科技