Web程序设计 课件 【ch11】PHP与MVC开发模式_第1页
Web程序设计 课件 【ch11】PHP与MVC开发模式_第2页
Web程序设计 课件 【ch11】PHP与MVC开发模式_第3页
Web程序设计 课件 【ch11】PHP与MVC开发模式_第4页
Web程序设计 课件 【ch11】PHP与MVC开发模式_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十一章Web程序设计PHP与MVC开发模式新工科建设之路·计算机类专业系列教材01MVC概述01MVC概述01MVC介绍MVC(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。MVC各部分的功能如下。模型:管理大部分业务逻辑和所有数据库逻辑,提供了连接和操作数据库的抽象层。控制器:负责响应用户请求、准备数据,以及决定如何展示数据。视图:负责渲染数据,通过HTML方式呈现给用户。典型WebMVC流程如图所示。01MVC概述02MVC的组成控制器负责协调整个应用程序的运转,简单来讲,就是接收浏览器端的请求。控制器接收用户的输入并调用模型和视图去完成用户的需求,单击Web页面中的超链接或HTML表单时,控制器本身不输出任何东西,只是接收请求并决定调用哪个模型构件去处理浏览器端发出的请求,然后确定用哪个视图来显示模型处理返回的数据。1.控制器模型的设计可以说是MVC主要的核心。MVC并没有提供模型的设计方法,只是用来组织管理这些模型,以便模型的重构和提高其重用性。从面向对象编程来讲,MVC定义了一个顶级类,确定子类有哪些是可以做的,这对开发者来说非常重要。2.模型01MVC概述02MVC的组成从用户角度,视图就是用户看到的HTML页面。从程序角度,视图负责生成用户界面,通常根据模型中的数据转化成HTML输出给用户。视图可以允许用户以多种方式输入数据,但数据本身并不由视图来处理,视图只是用来显示数据的。在实际应用中,可能有多个视图访问同一个模型。比如,在“用户”这一模型中,就有一个视图显示用户信息列表,还有管理员使用用于查看、删除用户的视图,这两个视图同时访问“用户”这个模型。3.视图02PHP开发中的模板技术02PHP开发中的模板技术01模板与模板引擎1模板模板是一组插入了HTML的PHP脚本,或者说插入了PHP脚本的HTML,通过插入的内容表示变化的数据。模板引擎模板引擎技术的核心比较简单。只要将美工页面(不包含任何的PHP代码)指定为模板文件,并将这个模板文件中活动的内容,如数据库输出、用户交互等部分,定义成使用特殊“定界符”包含的“变量”,然后放在模板文件中的相应位置。当用户浏览时,由PHP脚本程序打开该模板文件,并将模板文件中定义的变量替换。202PHP开发中的模板技术01模板与模板引擎在Web开发中分离应用程序的业务逻辑和表现逻辑,是我们使用模板引擎的主要目的,其中的原因如下。✧美工设计人员可以与应用程序开发人员独立工作,因为应用的表现和逻辑并非密不可分地纠缠在一起。✧可以使用同样的代码基于不同目标生成数据,如生成打印的数据、生成Web页面或生成电子数据表等。02PHP开发中的模板技术02Smarty模板引擎1Smarty模板引擎的工作原理在接收到客户端的HttP请求之后,PHP脚本创建模板引擎,模板引擎读取模板内容,并最终将PHP程序与模板合并,生成合并脚本,Smarty工作原理如图所示。02PHP开发中的模板技术02Smarty模板引擎Smarty模板引擎的使用Smarty.class.php是整个Smarty模板的核心类,通常需要在Web应用程序目录下建立如下目录。①appdir/smarty/libs:

对应压缩包下的libs目录,存储smarty需要的类文件。②appdir/smarty/templates_c:存储模板文件,程序用到的模板文件都放在这里。③appdir/smarty/templates:

存储模板属性文件。④appdir/smarty/configs:

存储相关配置文件。203基于MVC的PHP开发框架简介03基于MVC的PHP开发框架简介CodeIgniter是一个小巧但功能强大的、由PHP编写的、基于MVC的Web应用开发框架,可以为PHP程序开发人员建立功能完善的Web应用程序。CodeIgniter最小化了模板中的程序代码量,生成的URL非常干净,并且对搜索引擎友好。2.ThinkPHPThinkPHP是一个快速、兼容且简单的轻量级国产PHP开发框架。ThinkPHP可以支持Windows/UNIX/Linux等服务器环境,正式版本需要PHP5.0以上版本支持,支持MySQL、PgSQL、Sqlite多种数据库和PDO扩展。ThinkPHP本身没有特别的模块要求,具体的应用系统运行环境要求视开发涉及的模块来定。1.Codelgniter03基于MVC的PHP开发框架简介Laravel是TaylorOtwell使用PHP语言开发的一款开源的Web应用框架。Laravel是简洁、优雅的框架,具有简洁且富于表达性的语法。Laravel还为开发大型应用提供了各种强大的支持功能,包括自动验证、路由、Session、缓存、数据库迁移等。Laravel框架具有以下特点。①对外只提供一个入口,从而让框架统一管理项目的所有请求。②采用MVC设计模式,帮助团队更好地协同开发,为项目后期的维护提供方便。③支持Composer依赖管理工具,可以为项目自动安装依赖包。④采用ORM(ObjectRelationalMapping,对象关系映射),并支持AR(ActiveRecord,活动记录)模式。⑤具有路由功能。3.Laravel03基于MVC的PHP开发框架简介4.FleaPHPFleaPHP是一款优秀的国产Web开发框架,致力于减少开发者创建Web应用程序的工作量,并降低开发难度和强度,提高开发效率。FleaPHP还有以下特点:①简单、容易理解的MVC模型。②易于使用、高度自动化的数据库操作。③尽可能少的配置。④自动化的数据验证和转义。⑤丰富的组件。⑥与Smarty模板集成。04Codelgniter框架应用04Codelgniter框架应用CodeIgniter是一个用PHP编写的为Web开发应用程序人员提供的工具包,目标是实现比从零开始编写代码更快速地开发项目,为此提供了一套丰富的类库来满足通常的任.务需求,并且提供了一个简单的接口和逻辑结构来调用这些库。CodeIgniter可以将需要完成的任务代码量最小化,这样开发人员就可以把更多的精力放到项目的开发中。04Codelgniter框架应用01Codelgniter的特点从技术和架构角度,CodeIgniter按照下列目标创建。①动态实例化。在CodeIgniter中,组件的导入和函数的执行只有在被要求的时候才进行,而不是在全局范围进行。②松耦合。耦合是指一个系统组件之间的相关程度。组件互相依赖越少,系统的重用性和灵活性就越好。CodeIgniter的目标就是构建一个非常松耦合的系统。③组件单一性。单一是指组件有一个非常小的专注目标。在CodeIgniter中,为了达到最大的用途,每个类和它的功能都是高度自治的。04Codelgniter框架应用02安装Codelgniter安装CodeIgniter分为4个步骤:①解压缩安装包;②把CodeIgniter文件夹和里面的文件部署到服务器,通常index.php位于服务器的根目录;③编辑application/config/config.php文件,设置基本URL;④如果需要使用数据库,就编辑application/config/database.php,并在这个文件中设置数据库参数。05

ThinkPHP框架的应用05ThinkPHP框架的应用01ThinkPHP的安装ThinkPHP官网提供了两个版本:ThinkPHP5.0.11核心包和ThinkPHP5.0.11完整包。其中,ThinkPHP5.0.11核心包包含运行ThinkPHP框架所需的所有代码和一些常用的类.库。ThinkPHP的代码不需要任何安装过程。只需把下载的压缩包中的ThinkPHP文件夹解压缩到项目指定的目录中就可以了,如D:\WWWlhtdocs\thinkphp\。2.项目入口文件将ThinkPHP的核心代码存储好以后,就可以创建一个项目入口文件来开始一个新的项目。1.ThinkPHP的获取与安装05ThinkPHP框架的应用02控制器类的创建1控制器的模块与操作ThinkPHP框架对控制器类的文件名有一定的规定,要求必须是<模块名>.php。在默认情况下,项目首页的模块名是Index,因此在自动创建项目时,index.php会被自动创建。URL的处理ThinkPHP还提供了一些其他URL处理模式供用户选择。URL处理模式可以通过修改application目录下的config.php文件来实现。205ThinkPHP框架的应用03模型类的创建1模型的定义与实例化ThinkPHP框架对模型类的文件名有一定的规定,要求文件名必须是<模型名>.php。下面创建一个简单的User模型。首先创建一个名为user的数据表。接下来创建一个基于User模型的模型类,文件名为User.php。数据库的连接与操作因为ThinkPHP的数据操作是基于模型类的,所以所有底层数据库连接和操作都会由ThinkPHP的核心代码自动完成,不需用户具体操作。也就是说,该项目只需在config.php中进行数据库配置操作。205ThinkPHP框架的应用04模板文件的编写从前面的示例模板中可以看到,模板中的变量与PHP中的变量定义方法相同,即使用“66双开头的变量名。与Smarty模板类似,模板中的变量需要用一对定界符来标示。2.模板中函数的使用ThinkPHP模板的另一个强大功能就是可以直接调用PHP默认的和用户自定义的函数,其语法格式如下:1.模板中的变量05ThinkPHP框架的应用04模板文件的编写(1)循环标签<volist>对于通常的数据库操作往往使用循环标签<volist>。该标签有两个属性,即name和id。name是传入的变量名称,id是在标签内可以使用的代表数组中每个元素的变量数组。(2)条件判断标签<if>与PHP的if语句类似,在ThinkPHP的模板中也可以根据传入的变量进行条件判断。(3)PHP代码标签<php>ThinkPHP提供了一个可以直接将PHP代码放到模板中运行的方式。用户只需要把要执行的PHP代码放到{php}标签中就可以。3.基本标签的使用06

ThinkPHP应用实例——在线日程表06ThinkPHP应用实例——在线日程表创建一个数据表calendar,用来存储日程表数据,如表11-3所示,将记录日程的具体日期、事件、具体描述和是否已经完成。1.数据库的设计06ThinkPHP应用实例——在线日程表数据库创建好以后,还需要创建供用户访问的模板。这里的每个页面都需要一个模板文件。主页面将显示所有日程,并且提供链接以方便用户添加新日程,以及更新、删除现有日程。添加新日程页面需要一个简单的表单,具体代码如下。(1)文件名index.html(2)模板edit.html2.模板的设计06ThinkPHP应用实例—

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论