当前位置: 首页 > 文档资料 > FuelPHP 入门教程 >

Architecture 概述

优质
小牛编辑
127浏览
2023-12-01

FuelPHP基于经过实战测试的Model-View-Controller架构以及HMVC (Hierarchical MVC)支持。 虽然MVC提供灵活的分层应用程序开发,但HMVC更进一步实现了Web应用程序的小部件化。

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

Model

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

控制器(Controller)

典型的MVC应用程序从Controller启动。 一旦用户向FuelPHP Web应用程序发送请求,该应用程序将收集有关请求的所有信息并将其发送给Controller。 Controller执行所请求页面所需的业务逻辑,然后以模型的形式调用相关的View以及处理的数据。

View

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

演示者(Presenter)

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

分层MVC

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

Module

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

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

Package

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

在Package不包含任何网页或部分网页的意义上,Package与Module不同。 包可以在FuelPHP以及任何其他PHP框架中使用。

工作流 (Workflow)

FuelPHP的工作流程简单易懂。 它如下图所示。

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

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

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

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

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

最后更新:

类似资料

  • 概述 国际化和本地化的目的就是让一个网站应用能做到根据用户语种和指定格式的不同而提供不同的内容。 Django 对文本翻译, 日期、时间和数字的格式化,以及时区提供了完善的支持。 实际上,Django做了两件事: 由开发者和模板作者指定应用的哪些部分应该翻译,或是根据本地语种和文化进行相应的格式化。 根据用户的偏好设置,使用钩子将web应用本地化。 很显然,翻译取决于用户所选语言,而格式化通常取决

  • 虽然Django 满满的便捷性让Web 开发人员活得轻松一些,但是如果不能轻松地部署你的网站,这些工具还是没有什么用处。Django 起初,易于部署就是一个主要的目标。有许多优秀的方法可以轻松地来部署Django: 如何使用WSGI 部署 部署的检查清单 FastCGI 的支持已经废弃并将在Django 1.9 中删除。 如何使用FastCGI、SCGI 和AJP 部署Django 如果你是部署D

  • 本书概述 进程的概念大家都很熟悉,但你是否能准确说出僵尸进程的含义呢?还有 COW(Copy On Write)、Flock(File Lock)、Epoll 和 Namespace 的概念又是否了解过呢? 本书汇集了进程方方面面的基础知识,加上编程实例,保证阅读后能自如地回答以上问题,在项目开发中对进程的优化也有更深的理解。 本书架构 本书按循序渐进的方式介绍进程的基础概念和拓展知识,主要涵盖以

  • Docker在1.12.0和以上版本中增加了swarm模式。通过swarm模式管理的Docker Engines集群称之为“Swarm”。并可以通过Docker CLI来创建Swarm,在Swarm中部署应用服务,以及管理Swarm。 功能特点 在Docker Engines中集成了集群管理功能:通过Docker CLI可以创建一个用来发布应用services的swarm,而不需要安装其他任何额外

  • 这是 Elasticsearch 官方的 PHP 客户端。我们把 Elasticsearch-PHP 设计成低级客户端(低级设计模式),使用时不会偏离 REST API 的用法。 客户端所有方法几乎都与 REST API 对应,而且也与其他编程语言的客户端(如 ruby, python 等)方法结构相似。我们希望这种对应方式可以方便开发者更加容易上手客户端,且以最小的代价快速从一种编程语言转换到另

  • 特点 为什么用 Groovy?