FuelPHP基于经过战斗测试的模型 - 视图 - 控制器架构以及 HMVC(分层MVC)支持.虽然MVC提供了灵活的分层应用程序开发,但HMVC更进一步实现了Web应用程序的小部件化.
FuelPHP的优势在于它没有强制开发应用程序的具体方法.它只是提供了一个简单易用的标准结构.开发人员可以自由使用FuelPHP提供的预定义功能集,或在需要时对其进行修改. FuelPHP提供的所有功能(包括核心功能)都可以根据应用程序的要求进行更改.
模型
模型是商业实体应用程序. Controller和View以Model的形式交换数据.模型可以统一表示我们的业务数据.它使数据库层能够以标准方式与Web应用程序层交互,并提供选择,保存,编辑和删除数据库实体的选项.
控制器
典型的MVC应用程序从Controller启动.用户向FuelPHP Web应用程序发送请求后,应用程序将收集有关请求的所有信息并将其发送给Controller. Controller执行所请求页面所需的业务逻辑,然后以模型的形式调用相关的View以及处理过的数据.
查看
View是MVC应用程序的表示层. View决定如何向用户显示模型.它支持对高级布局的简单数据渲染,使网站能够在所有页面上规范化设计. View还提供主题支持,可以在整个应用程序中快速更改设计.
Presenter
Presenter是FuelPHP提供的一项特殊功能.它是Controller和View之间的粘合剂.控制器可以共享一些低级别的职责,例如从数据库中检索模型,为视图生成数据等.控制器调用Presenter而不是View,后者又调用View. Presenter支持纯粹的业务逻辑和表示层分离.
分层MVC
FuelPHP提供从另一个控制器调用一个控制器的选项,类似于来自客户端(浏览器)的请求.如果任何控制器调用另一个控制器,则被调用的控制器将响应返回给调用控制器,而不是将其呈现给客户端(浏览器).这样可以启用Web应用程序的 widgetization .例如,评论部分可以显示为独立页面以及主(博客)页面的子部分.
模块
FuelPHP的一个显着特征是Web应用程序的一部分可以转换为模块,可以在不同的应用程序之间共享.例如,通过将模块代码从源应用程序复制到目标应用程序,可以在另一个应用程序中重用为应用程序创建的博客模块.
请注意,创建新模块非常简单开发主要应用程序.该结构类似于主应用程序,唯一的例外是模块应编码单独的文件夹.
包
FuelPHP提供了一个选项将代码组织到一个名为Package的单元中.包可以包含Web应用程序所需的一个或多个功能.例如,可以将数据库组件(如ORM,电子邮件等)组织到一个包中,并在需要时使用.
在包的意义上,包与模块不同不包含任何网页或部分网页.包可以在FuelPHP以及任何其他PHP框架中使用.
工作流程
FuelPHP的工作流程简单易懂.它如下图所示.
用户向应用程序发送请求.
控制器接收请求并通过与模型交互收集信息反过来又与数据库交互.
控制器通过向其他控制器发送子请求与其他控制器交互来收集信息.
Controller将检索到的模型发送到视图,视图又生成演示文稿并作为响应发送给客户端.
在某些情况下,控制器可以将控制传递给演示者.在这种情况下,演示者从模型中收集信息并将其发送给客户端.除非从数据库中检索模型,否则演示者不会执行任何业务逻辑.