FuelPHP - 架构概述



FuelPHP 基于经过实战检验的模型-视图-控制器架构,并支持HMVC(分层 MVC)。MVC 提供灵活的分层应用程序开发,而 HMVC 则更进一步,可以实现 Web 应用程序的小部件化。

FuelPHP 的优势在于它不强制使用特定的方式来开发应用程序。它只提供了一个简单易用的标准结构。开发人员可以自由使用 FuelPHP 提供的预定义功能集,也可以在需要时修改它。FuelPHP 提供的所有功能,包括核心功能,都可以根据应用程序的需求进行更改。

模型

模型是应用程序的业务实体。控制器和视图以模型的形式交换数据。模型实现了我们业务数据的统一表示。它使数据库层能够以标准的方式与 Web 应用程序层交互,并提供选择、保存、编辑和删除数据库实体的选项。

控制器

一个典型的 MVC 应用程序从控制器开始。一旦用户向 FuelPHP Web 应用程序发送请求,应用程序就会收集有关该请求的所有信息并将其发送到控制器。控制器执行请求页面所需的业务逻辑,然后调用相关的视图以及以模型形式处理后的数据。

视图

视图是 MVC 应用程序的表示层。视图决定如何向用户显示模型。它支持从简单的数据渲染到高级布局,使网站能够在所有页面上规范化设计。视图还提供主题支持,可以快速更改整个应用程序的设计。

展示器

展示器是 FuelPHP 提供的一项特殊功能。它是控制器和视图之间的粘合剂。控制器可以共享一些低级职责,例如从数据库检索模型、为视图生成数据等。控制器调用展示器而不是视图,而展示器又调用视图。展示器实现了业务逻辑和表示层的完全分离。

分层 MVC

FuelPHP 提供了一个选项,可以从另一个控制器调用一个控制器,类似于来自客户端(浏览器)的请求。如果任何控制器调用另一个控制器,则被调用的控制器将响应返回给调用控制器,而不是呈现给客户端(浏览器)。这使得 Web 应用程序的小部件化成为可能。例如,评论部分可以显示为一个独立的页面,也可以作为主(博客)页面的子部分。

模块

FuelPHP 的一个突出特点是可以将 Web 应用程序的一部分转换为模块,这些模块可以在不同的应用程序之间共享。例如,为一个应用程序创建的博客模块可以通过将模块代码从源应用程序复制到目标应用程序来在另一个应用程序中重复使用。

请注意,创建新模块与开发主应用程序一样简单。结构与主应用程序类似,唯一的例外是模块应该在单独的文件夹中编码。

FuelPHP 提供了一个选项,可以将代码组织到一个称为包的单个单元中。一个包可以包含 Web 应用程序所需的一个或多个功能。例如,数据库组件(如 ORM、电子邮件等)可以组织到一个包中,并在需要时使用。

包与模块的不同之处在于,包不包含任何网页或部分网页。包既可以在 FuelPHP 中使用,也可以在任何其他 PHP 框架中使用。

工作流程

FuelPHP 的工作流程简单易懂。在下图中进行了描述。

Workflow
  • 用户向应用程序发送请求。

  • 控制器接收请求并通过与模型交互来收集信息,而模型又与数据库交互。

  • 控制器通过向其他控制器发送子请求来与其他控制器交互以收集信息。

  • 控制器将检索到的模型发送到视图,视图又生成表示并将其作为响应发送到客户端。

  • 在某些情况下,控制器可能会将控制权传递给展示器。在这种情况下,展示器从模型中收集信息并将其发送到客户端。在这里,展示器不执行任何业务逻辑,除了从数据库检索模型。

广告