`

理解PHP中的MVC编程之MVC框架简介

    博客分类:
  • PHP
阅读更多
【什么是MVC?】

MVC是一个可以让你把“三个部分(即MVC的全称,Model、View、Controller)”谐调地组成一个复杂应用程序的概念。一辆汽车就是一个在现实生活中非常好的MVC例子。我们看车都看两个View(显示)部分:内部和外部。而这两个都离不开一个Controller(控制者):司机。刹车系统、方向盘和其他操控系统代表了Model(模型):他们从司机(Controller)那里取得控制方法然后应用到内部和外观(View)。

【网络上的MVC】

MVC框架所涵盖的概念相当简单并且极度灵活。基本的概念就是,你有一个单独的控制器(如index.php)用来控制所有建立在参数请求基础上的框架内应用程序。这个控制器通常包含了(最小程度上)一个定义模型的参数、一个事件和一个GET参数。这样控制器就能确认所有的请求然后运行相应的事件。打个比方来说,一个像这样/index.php?module=foo&event=bar的请求很有可能就是用来载入一个名叫foo的类,然后运行foo::bar()[就是其中的bar()函数]。这样做的好处有:

一个对应所有应用程序的接口

同时维护一个应用程序内无数的代码非常麻烦,因为每一段代码都有自己的相对路径、数据库链接、验证等等。而这样做就免除你在这方面的烦恼,允许你合并并重复使用代码

【为什么要创建作者自己的MVC框架?】

迄今为止,我没有见到过太多用PHP写的MVC框架。事实上我仅仅知道一个-Solar,是完全用PHP5写的。另外一个是Cake,一个试图成为PHP的RoR(Rubyalign=centerbgColor=#e3e3e3border=1><?php
 require_once('config.php');//Otherrequires,DBinfo,etc.

 $APP_DB='mydb';
 $APP_REQUIRE_LOGIN=false;//Settotrueifscriptrequireslogin
 $APP_TEMPLATE_FILE='foo.php';//Smartytemplate
 $APP_TITLE='MyApplication';

 if($APP_REQUIRE_LOGIN==true){
if(!isset($_SESSION['userID'])){
 header("Location:/path/to/login.php");
 exit();
}
 }

 $db=DB::connect('mysql://'.$DB_USER.':'.$DB_PASS.'@localhost/'.$APP_DB);
 if(!PEAR::isError($db)){
$db->setFetchMode(DB_FETCHMODE_ASSOC);
 }else{
die($db->getMessage());
 }

 //Putyourlogichere
 //Outputthetemplate

 include_once(APP_TEMPLATE_PATH.'/header.php');
 include_once(APP_TEMPLATE_PATH.'/'.$APP_TEMPLATE_FILE);
 include_once(APP_TEMPLATE_PATH.'/footer.php');
?>
天哪,只是看这些代码都会让我有退缩的欲望。这段代码的概念就是确保每一个应用程序都能适用于这个处理方法,比如我可以简单地将template.txt拷进myapp.php,改变一些变量,瞧,它就能运行起来了。尽管如此,这个组织严密的处理方法存在一些严重的缺点:

如果我的老板想让作者用myapp.php在一些情况下输出PDF、一些情况下输出HTML、一些情况下(直接提交的XML请求)SOAP,我该怎么办?

如果这个应用程序需要IMAP或LDAP验证,我该怎么办?

我该如何处理各种不同的代码(包括编辑、升级和删除)?

我该如何处理多级验证(管理员vs.非管理员)?
我该如何启用输出缓存?www.phpv.net转载请注明出处

【新方式】

将所有东西都扔进这个MVC框架,你会发现生活是如此简单。请对比以下代码:

<?php
 classmyappextendsFR_Auth_User
 {
publicfunction__construct()
{
 parent::__construct();
}

 publicfunction__default()
 {
//Dosomethinghere
 }

 publicfunctiondelete()
 {}

 publicfunction__destruct()
 {
parent::__destruct();
 }
}

?>

注意这段代码显然不是用来链接到一个数据库、判断一个用户是否已经登陆、或者输出任何其他信息。控制器掌握了所有的一切。

如果我想验证LDAP,我可以建立FR_Auth_LDAP。控制器可以识别某些输出方法(比如$_GET['output'])并可以随时转换成PDF或者SOAP。事件处理delete,只负责删除,其他的它都不管。因为这个模块拥有一个FR_User类的实例,它可以简单地判断一个用户是否已经登陆等等。Smarty,作为模板引擎控制缓存是理所当然的,但是控制器同样可以控制一部分缓存。

从前面讲的老方式到MVC方式对于很多人来讲可能是一个全新、陌生的概念,但是一旦你转换到了这样一个概念,那么要转回去将是件相当困难的事情。

分享到:
评论

相关推荐

    phpMVC框架编程

    现在的PHP主流是框架开发,您对框架到底了解多少呢?phpMVC框架编程带你深入了解!

    PHPmvc框架项目

    自己开发PHP的mvc框架

    PHP简单实现MVC框架路由功能源码(原作者代码有误,已修改)

    说到使用PHP进行网站开发,自然离不开各种PHP的开发框架,开发框架为我们提供了灵活的开发方式,MVC层分离,业务解耦等等,让...那么这一篇博文,我们就先来一个简单点的功能,也就是说说MVC框架的路由功能实现方法。

    本教程以PHP语言为基础,深入浅出地解析MVC(模型-视图-控制器)框架的关键技术,帮助初学者快速掌握并应用于实际的网站开发中

    本教程是一份最简洁易懂的PHP MVC框架入门教程,它详细介绍了MVC(模型-视图-控制器)框架的基本...需要注意的是,虽然本教程尽可能地讲解得详细易懂,但是如果你有一些基本的PHP编程知识,将更容易理解和掌握MVC框架。

    PHP__单入口MVC模式实例

    自己为了做一个CMS,提前搭的一个单入口MVC,有兴趣的朋友可以下载。

    《Pro PHP MVC (English)》是一本关于使用 PHP 构建 MVC (Model-View-Controller

    PHP 简介: 提供 PHP 编程语言的基础知识和语法,以及如何在 PHP 中实现 MVC 设计模式。 框架介绍: 介绍流行的 PHP 框架,如 Laravel、Symfony、CodeIgniter 等,以及它们如何实现 MVC 架构。 路由和请求处理: ...

    浅析PHP程序设计中的MVC编程思想

    PHP的MVC编程思想目前已经被广泛使用于各种大型项目的开发,很多成熟的MVC框架也逐渐被大家所熟知并被广泛应用于各类项目中,比较常见的如ThinkPHP、codeigniter、Symfony、yii、cakePHP等等。本文就来简述一下php的...

    基于PHP的轻量级MVC框架设计源码

    系统采用了PHP编程语言,实现了基于PHP7+的轻量级MVC框架。该框架适用于博客系统、新闻管理系统、企业官网和Api系统等多种应用场景,是这些系统的最佳选择。项目结构清晰,代码可读性强,易于理解和维护。

    php实现最简单的MVC框架实例教程

    本文以一个实例的形式讲述了PHP实现MVC框架的过程,比较浅显易懂。现分享给大家供大家参考之用。具体分析如下: 首先,在学习一个框架之前,基本上我们都需要知道什么是mvc,即model-view-control,说白了就是数据...

    ThinkPHP 3.1.2 - PHP的开发框架MVC - 含Core,Extend,Example

    打造框架底层DIY定制和类AOP编程体验。利用这一新的特性,开发人员可以 方便地通过模式扩展为自己量身定制一套属于自己或者企业的开发框架。 编译机制:独创的项目编译机制,有效减少OOP开发中文件加载的性能开销。 ...

    yii-1.1.4.r2429.zip_mvc php_php yii_yii 1.1.4.rar_yii mvc_yii1.1

    Yii 框架 php编程框架 MVC 十分简洁方便的开发框架

    PHP 实现简单的 MVC 框架 - 实验楼.zip

    本课程将使用 PHP 实现一个简单的 MVC 框架,包含模型、...通过本课程的学习,可以了解MVC框架的基本原理和运行流程,学习面向对象编程和MVC设计模式,并学习开发中的一些注意事项。对其他框架学习有很大的帮助作用。

    EasyMVC 框架.zip

    3、采用mvc设计模式,oop面向对象编程思想  4、采用类的自动装载(autoload)机制 类lazy loading缓存,提升执行速度和效率 5、支持高并发,大访问量,海量数据处理,数据库分布式部署,读写分离,memcache 缓存池 ...

    84PHP开源框架 v1.1.0

    84PHP是一个M(Model)V(View)模式开发框架,而没有主流框架中的C(Controller),之所以这样选择是出于性能与简洁度的考量。因此,本框架也就无需进行路由操作,如果您有特别的需求,您可以在服务器中或者虚拟...

    《PHP高级程序设计_模式、框架与测试》中文版PDF

    书中首先从oop采用的机制——抽象类、接口、契约式编程开始讲起,然后介绍了静态方法、单例模式、工厂模式和php 6的新特性等内容,接着介绍了测试和文档方面的内容,还介绍了标准php库spl方面的知识以及php开发人员...

    PHP从零开始打造自己的MVC框架之入口文件实现方法详解

    本文实例讲述了PHP从零开始打造自己的MVC框架之入口文件实现方法。分享给大家供大家参考,具体如下: 首先来了解一下框架的运行流程: 入口文件 -> 定义常量 -> 引入函数库 -> 自动加载类 -> 启动框架 -> 路由解析 ...

    HerosPHP(PHP MVC开发框架) v3.0.1.zip

    HerosPHP是一个免费开源的,快速、优雅的面向对象的 轻量级PHP MVC开发框架。使用她你能够快速的搭建简洁,易于扩展的web应用。 Herosphp特点 1、部署简单,高开发效率并且高性能 2、框架简单实用,傻瓜式开发,...

    PHP高级程序设计-模式-框架-测试

    书中首先从OOP 采用的机制—— 抽象类、接口、契约式编程开始讲起,然后介绍了静态方法、单例模式、工厂模式和PHP 6 的新特性等内容,接着介绍了测试和文档方面的内容,还介绍了标准PHP 库SPL 方面的知识以及PHP ...

    PHP从零开始打造自己的MVC框架之路由类实现方法分析

    本文实例讲述了PHP从零开始打造自己的MVC框架之路由类实现方法。分享给大家供大家参考,具体如下: 在core目录下,新建一个名为lib的子目录,然后把我们前面写个route.php这个文件移动到这个目录下。 因为route类...

    PHP高级程序设计_模式、框架与测试

     第15章 Zend框架简介  第16章 Zend框架高级功能  第17章 应用Zend框架 第五部分 Web 2.0  第18章 Ajax和JSON  第19章 Web服务和SOAP协议介绍  第20章 高级Web服务  第21章 证书验证

Global site tag (gtag.js) - Google Analytics