FleaPHP及Smarty实例教程

导读:FleaPHP及Smarty开发指南整理By:ZEROandYDH一.FleaPHP1.开始前的准备工作为了避免各种不同开发环境配置对学习FleaPHP造成的干扰,因此建议你按照本文配置一个专门用于学习FleaPHP的开发环境。步骤:??首先下载APMExpress5和FleaPHP完全版,并解压缩到硬盘。最后,启动APMXE5,并从任务栏系统托盘区的APM

FleaPHP及Smarty实例教程

FleaPHP及Smarty 开发指南

整理By:ZERO and YDH

一.FleaPHP

1. 开始前的准备工作

为了避免各种不同开发环境配置对学习 FleaPHP 造成的干扰,因此建议你按照本文配置一个专门用于学习 FleaPHP 的开发环境。 步骤:

? ?

首先 下载 APM Express 5 和 FleaPHP 完全版,并解压缩到硬盘。

最后,启动 APMXE5,并从任务栏系统托盘区的 APM Express 图标上选择“Start”菜单,运行 Apache 和 MySQL。

有关 APM Express 的详细信息,请参考APM Express 1.5 火爆公测。

注意:在开发指南中,如果没有特别说明,htdocs 均指存放 PHP 脚本文件的目录。当你使用 APMXE5,并且将其解压缩到 D:\\APMXE5 目录时,则 htdocs 目录等同于 D:\\APMXE5\\htdocs 目录。

2. FleaPHP 中的 MVC 模式

理解 FleaPHP 中,MVC 模式是如何实现的,以及其特点,可以帮助你更好的运用 FleaPHP。

什么叫做设计模式? Design pattern

简单来说,设计模式(Pattern)就是解决某一类问题的特定方法。由于这种特定方法在解决同类问题时具有通用性,所以我们就可以一次又一次的利用已有的经验。具体到程序编写上,就是我们可以用类似的程序结构和代码解决同类型的问题。有关设计模式的详细内容,可以阅读经典著作《设计模式》,这里我就不班门弄斧了。

MVC 实际上是一系列略有不同的模式。FleaPHP 采用的是Passive(被动)MVC 模式。

在 Passive MVC 模式中,Model(模型)完全不知道自己身处于 MVC 结构之中。换句话说,Model 就是一个普通的对象,与 MVC 模式里面的其他组成部分完全没有关联。具体而言,MVC 模式涉及到下列三类对象:

? ? ?

M 代表 Model,即模型,用于封装与业务逻辑有关的代码和数据。例如对订单的各种计算。

V 代表 View,即视图,用于呈现内容给用户(也就是将程序运行的结果返回给浏览器显示)。例如商品列表页面、后台登录页面。

C 代表 Controller,即控制器,用于接收用户输入(通过浏览器发起的请求),然后调用模型(Model)对输入数据进行处理并获得处理结果。最后将结果传递到视图(View),从而让用户能够看到自己操作的结果。例如用户点击删除文章按钮后,控制器调用操作文章的模型,删除掉指定文章,最后通过视图显示成功删除文章的提示信息。

经过这样简单的分离,我们就把应用程序操作数据的代码(绝大部分 Web 应用程序都是对数据进行操作)和处理用户输入输出的代码分离开来了。 这种分离有许多好处:

? ?

清晰的将应用程序分隔为独立的部分; 业务逻辑代码能够很方便的在多处重复使用;

1

? ?

方便开发人员分工协作;

如果需要,可以方便开发人员对应用程序各个部分的代码进行测试。

如果你上面的文字让你觉得很无聊或者不够严谨,那么说明你已经很熟悉 MVC 模式了。如果你看到上面的文字感到无所适从,那说明你还需要多阅读一些面向对象相关的书籍和文档。

应用程序执行流程

下面的插图描述了基于 FleaPHP 应用程序的执行流程。

1. index.php 是应用程序的入口文件,负责定义一些应用程序必须的常量,并载入 FleaPHP 框架,然后执行 run() 函数; 2. 过滤器链完成 HTTP 请求数据解析、MagicQuotes 处理等工作;

3. 应用程序控制根据 HTTP 请求,调用领域逻辑、表数据入口、组件等,并将处理结果传送到视图/模板; 4. 视图/模板根据应用程序控制器提供的数据生成输出内容并传送到浏览器。

在 FleaPHP 中,index.php 里面的 run() 在调用过滤器链后,会运行一个调度器。该调度器根据 HTTP 请求参数决定要调用的应用程序控制器。例如 index.php?controller=blog&action=list 这个请求表示要调用名为 blog 的应用程序控制器的 list 动作。然后调度器会调用这个控制器的动作。

在 FleaPHP 应用程序中,控制器实现为一个类,控制器动作就是该类的一个方法。

2

在控制器(MVC 模式中的 Controller)方法中,通过调用领域逻辑代码(MVC 模式中的 Model)来处理 HTTP 请求提交的数据并获得结果。然后再将结果传递给视图(MVC 模式中的 View)。视图根据控制器方法提供的参数从模板文件构造最终的页面内容,并返回给浏览器。

3. 应用程序入口

与许多开发框架一样,FleaPHP 通常也使用一个入口文件来启动框架,并运行应用程序代码。虽然 FleaPHP 并不要求应用程序必须使用单一的入口文件,不过在本系列文章中,我大部分时间都使用单一入口文件。

单一入口应用程序

在 FleaPHP 应用程序使用 MVC 模式时,应用程序的所有功能都通过一个单一的文件来调用。这种通过单一文件来执行所有功能的应用程序,称为单一入口应用程序。有关单一入口应用程序的一些信息,可以参考 ChinaUnix 上的一篇帖子。

许多著名的 PHP 应用程序都是单一入口,例如 Drupal、WordPress、XOOPS、Mambo 等。当然也有 phpMyAdmin 这样的非单一入口应用程序。

创建入口文件

现在,我们来创建一个最简单的入口文件。打开文本编辑器,创建 htdocs\\index.php 文件,内容如下:

这个画面显示了一个错误信息,但是也表明 index.php 中的两行代码已经成功启动了 FleaPHP 框架。

实现我们的第一个控制器

在 FleaPHP 应用程序中,应用程序包含多个控制器。每一个控制器又提供一组控制器动作(后文及本系列文章中都简称为“动作”)。每一个浏览器发送给 FleaPHP 应用程序的请求,都是由一个动作来处理的。将一组相关的动作集中到一起,就形成了一个控制器。 现在我们来实现第一个控制器:

3

创建 htdocs\\APP\\Controller 目录,并创建文件 htdocs\\APP\\Controller\\Default.php (注意严格匹配目录名和文件名的大小写),内容如下:

从刚刚这个例子可以看到,每一个控制器实际上就是一个类,而一个动作则是该类的一个方法。 添加更多的动作

现在我们为这个控制器添加更多的 Action 方法:

切换到浏览器,将浏览地址从 http://localhost/index.php 改为 http://localhost/index.php?action=say 并按回车键。可以看到输出内容改变了。

由此可见,action 参数的值决定了要调用控制器中的哪一个动作方法。在上面的例子中,action=say 时,调用的动作方法为 actionSay。因为 FleaPHP 默认要求每一个动作方法必须加上前缀 action。如果不提供 action 参数,则名为 index 的动作方法 actionIndex() 会被调用。

实现更多的控制器

创建新文件 htdocs\\APP\\Controller\\Book.php,并输入内容:

与使用 action 参数指定要调用的动作类似,用 controller 参数可以指定要调用的控制器。而此时 action 参数指定的就是该控制器的动作。

4. 命名规范和目录结构

FleaPHP 的命名规则和目录结构初看上去比较复杂,但习惯以后,你会发现这种命名规则带来许多好处。因此像 Zend Framework 也是采用同样的做法。

5

五星文库wxphp.com包含总结汇报、党团工作、工作范文、外语学习、IT计算机、旅游景点、行业论文、资格考试以及FleaPHP及Smarty实例教程等内容。

本文共10页1234>>10