FuelPHP - 架构概述


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

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

模型

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

控制器

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

看法

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

主持人

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

分层MVC

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

模块

FuelPHP 的显着特征之一是 Web 应用程序的一部分可以转换为模块,可以在不同的应用程序之间共享。例如,为一个应用程序创建的博客模块可以在另一个应用程序中重用,只需将模块代码从源应用程序复制到目标应用程序即可。

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

包裹

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

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

工作流程

FuelPHP 的工作流程简单且易于理解。如下图所示。

工作流程
  • 用户向应用程序发送请求。

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

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

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

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