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+MYSQL开发工具及资源收藏
Jan 02 PHP
MySQL相关说明
Jan 15 PHP
PHP在字符串中查找指定字符串并删除的代码
Oct 02 PHP
PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
Mar 10 PHP
ionCube 一款类似zend的PHP加密/解密工具
Jul 25 PHP
openflashchart 2.0 简单案例php版
May 21 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
Jun 13 PHP
PHP安全上传图片的方法
Mar 21 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
Feb 04 PHP
如何离线执行php任务
Feb 21 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
Jan 29 PHP
PHP封装cURL工具类与应用示例
Jul 01 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
德生9700DX电路分析
2021/03/02 无线电
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
iOS+PHP注册登录系统 PHP部分(上)
2016/12/26 PHP
php图形jpgraph操作实例分析
2017/02/22 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
Javascript中的数学函数
2007/04/04 Javascript
Javascript 跨域访问解决方案
2009/02/14 Javascript
通过一段代码简单说js中的this的使用
2013/07/23 Javascript
jquery中append()与appendto()用法分析
2014/11/14 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
2016/10/08 Javascript
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
webpack配置打包后图片路径出错的解决
2018/04/26 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
Mint UI实现A-Z字母排序的城市选择列表
2018/12/28 Javascript
微信小程序点击item使之滚动到屏幕中间位置
2020/03/25 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
[01:09]DOTAPLUS——DOTA2的新时代
2018/04/04 DOTA
详解Django之admin组件的使用和源码剖析
2018/05/04 Python
python笔记_将循环内容在一行输出的方法
2019/08/08 Python
python3实现微型的web服务器
2019/09/03 Python
PyCharm更改字体和界面样式的方法步骤
2019/09/27 Python
Python日志处理模块logging用法解析
2020/05/19 Python
python爬虫如何解决图片验证码
2021/02/14 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
什么是数据库锁?Oracle中都有哪些类型的锁?
2015/08/21 面试题
七年级音乐教学反思
2014/01/26 职场文书
医院搬迁方案
2014/06/14 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
无保留意见审计报告
2015/06/05 职场文书
机器人总动员观后感
2015/06/09 职场文书
pyqt5蒙版遮罩mask,setmask的使用
2021/06/11 Python
Python学习之包与模块详解
2022/03/19 Python