首页 后端开发 php教程 理解PHP中的MVC编程之MVC框架简介

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

Dec 01, 2016 am 11:11 AM
mvc

【什么是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方式对于很多人来讲可能是一个全新、陌生的概念,但是一旦你转换到了这样一个概念,那么要转回去将是件相当困难的事情。 

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PHP MVC 架构:构建面向未来的 Web 应用程序 PHP MVC 架构:构建面向未来的 Web 应用程序 Mar 03, 2024 am 09:01 AM

引言在当今快速发展的数字世界中,构建健壮、灵活且可维护的WEB应用程序至关重要。PHPmvc架构提供了实现这一目标的理想解决方案。MVC(模型-视图-控制器)是一种广泛使用的设计模式,可以将应用程序的各个方面分离为独立的组件。MVC架构的基础MVC架构的核心原理是分离关注点:模型:封装应用程序的数据和业务逻辑。视图:负责呈现数据并处理用户交互。控制器:协调模型和视图之间的交互,管理用户请求和业务逻辑。PHPMVC架构phpMVC架构遵循传统MVC模式,但也引入了语言特定的功能。以下是PHPMVC

PHP MVC 架构的进阶指南:解锁高级功能 PHP MVC 架构的进阶指南:解锁高级功能 Mar 03, 2024 am 09:23 AM

mvc架构(模型-视图-控制器)是PHP开发中最流行的模式之一,因为它为组织代码和简化WEB应用程序的开发提供了清晰的结构。虽然基本的MVC原理对于大多数Web应用程序来说已经足够,但对于需要处理复杂数据或实现高级功能的应用程序,它存在一些限制。分离模型层分离模型层是高级MVC架构中常见的一种技术。它涉及将模型类分解为更小的子类,每个子类专注于特定功能。例如,对于一个电子商务应用程序,您可以将主模型类分解为订单模型、产品模型和客户模型。这种分离有助于提高代码的可维护性和可重用性。使用依赖注入依赖

如何使用PHP实现MVC模式 如何使用PHP实现MVC模式 Jun 07, 2023 pm 03:40 PM

MVC(Model-View-Controller)模式是一种常用的软件设计模式,可以帮助开发人员更好地组织和管理代码。MVC模式将应用程序分为三部分:模型(Model)、视图(View)和控制器(Controller),每个部分都有自己的角色和职责。在本文中,我们将讨论如何使用PHP实现MVC模式。模型(Model)模型代表应用程序的数据和数据处理。通常,

揭秘SpringMVC框架的成功:它为何广受欢迎 揭秘SpringMVC框架的成功:它为何广受欢迎 Jan 24, 2024 am 08:39 AM

SpringMVC框架解密:为什么它如此受欢迎,需要具体代码示例引言:在当今的软件开发领域中,SpringMVC框架已经成为开发者非常喜爱的一种选择。它是基于MVC架构模式的Web框架,提供了灵活、轻量级、高效的开发方式。本文将深入探讨SpringMVC框架的魅力所在,并通过具体的代码示例来展示其强大之处。一、SpringMVC框架的优势灵活的配置方式Spr

PHP中如何使用MVC架构设计项目 PHP中如何使用MVC架构设计项目 Jun 27, 2023 pm 12:18 PM

在Web开发中,MVC(Model-View-Controller)是一种常用的架构模式,用于处理和管理应用程序的数据、用户界面和控制逻辑。PHP作为流行的Web开发语言,也可以借助MVC架构来设计和构建Web应用程序。本文将介绍如何在PHP中使用MVC架构设计项目,并解释其优点和注意事项。什么是MVCMVC是一种软件架构模式,通常用于Web应用程序中。MV

PHP8框架开发MVC:初学者需要知道的重要概念和技巧 PHP8框架开发MVC:初学者需要知道的重要概念和技巧 Sep 11, 2023 am 09:43 AM

PHP8框架开发MVC:初学者需要知道的重要概念和技巧引言:随着互联网的快速发展,Web开发在当今的软件开发行业中扮演着重要的角色。PHP被广泛用于Web开发,并且有许多成熟的框架可以帮助开发人员更高效地构建应用程序。其中,MVC(Model-View-Controller)架构是最常见且广泛使用的模式之一。本文将介绍初学者在使用PHP8框架开发MVC应用程

PHP8框架开发MVC:逐步指南 PHP8框架开发MVC:逐步指南 Sep 11, 2023 am 10:05 AM

PHP8框架开发MVC:逐步指南引言:MVC(Model-View-Controller)是一种常用的软件架构模式,用于将应用程序的逻辑、数据和用户界面分离。它提供了一种将应用程序分成三个不同组件的结构,以便更好地管理和维护代码。在本文中,我们将探讨如何使用PHP8框架来开发一个符合MVC模式的应用程序。第一步:理解MVC模式在开始开发MVC应用程序之前,我

从路由到视图——深入探究Beego的MVC架构 从路由到视图——深入探究Beego的MVC架构 Jun 23, 2023 am 10:53 AM

Beego是一个基于Go语言的Web应用框架,具有高性能、简单易用和高可扩展性等优点。其中,MVC架构是Beego框架的核心设计理念之一,它可以帮助开发者更好地管理和组织代码,提高开发效率和代码质量。本文将深入探究Beego的MVC架构,让开发者更好地理解和使用Beego框架。一、MVC架构简介MVC,即Model-View-Controller,是一种常见

See all articles