Symfony框架用法教程:完整的初学者指南

2021年11月28日18:26:08 发表评论 562 次浏览
Symfony 框架
Symfony框架用法教程

如何使用Symfony框架?Symfony 是一个为 Web 应用程序设计的开源 PHP 框架。本文将讨论 Symfony 是如何诞生的、重要的组件、架构、工作流程、安装的基本步骤等等。

它已将自己确立为 Web 服务的基础。Symfony 包含可重用的 PHP 库和组件。Laravel 和 Drupal 等项目在其应用程序中使用 Symfony 组件。

Symfony 旨在减少 Web 应用程序的创建和维护时间并避免重复性任务。它深受 Spring 框架的影响和启发。 

Symfony 的历史

Symfony 由 SensioLabs 发布,并于 2005 年 10 月 18 日作为免费软件发布。它是在 MIT 许可下发布的。然而,更稳定的第一个版本于 2007 年发布,但不如 2.0 版那么有希望。但是,开发人员发现升级和向后兼容性存在重大问题。最好和最有前途的版本是 2.3,它具有良好的稳定性和特性。之后的升级,2.4、2.5、2.6就没有那么突出了,后续的版本都是向下兼容的。当前版本是 5.2,它具有一些重要功能,例如伪本地化、控制台上的 24 位颜色、TranslatableMessage 对象、对 PHP 8 属性/注释的支持等。

Symfony框架使用示例:特征

正如我们之前提到的,Symfony 的主要目标是优化 Web 应用程序。Symfony 框架具有以下独特的功能:

  • 基于MVC的微框架(模型-视图-控制器)
  • 高性能 PHP 框架
  • 解耦的可重用组件
  • 错误记录和会话管理功能
  • 灵活的 URI 路由
  • 充满活力、活跃的社区
  • 高度成熟的 Twig 模板引擎 
  • 可扩展,良好的代码可读性
  • 支持多种数据库平台

Symfony框架用法教程:Symfony 架构

该架构很简单,由可重用的组件和包组成。 

组件提供单一的专门功能。例如,HTTP 组件、缓存组件、文件系统组件等。这些只不过是独立的 PHP 库。 

捆绑包就像插件一样,更容易创建和使用。一个包可以使用许多 Symfony 组件并提供许多功能。Symfony 核心网络框架本身就是一个包(FrameworkBundle)。 

组件可以访问任意数量的包。框架中常用的bundle有FrameworkBundle、FrameworkExtraBundle、DoctrineBundle。除此之外,我们可以有自定义包和教义包。 

如何使用Symfony框架?Symfony 应用程序可以独立访问组件和包。下图代表了组件和包之间的完整关系:

Symfony框架用法教程:完整的初学者指南

除了 FrameworkBundle,以下组件需要提及如下:

Http内核

该组件提供了创建快速灵活的基于 HTTP 的应用程序所需的构建块。可以使用以下命令安装:

$ composer require symfony/HTTP-kernel

(如果你现在不理解以上内容,请不要担心,我们将在下一节中介绍这是什么!)

一些使用 HttpKernel 组件的项目有 Drupal、OroCRM、Lumen、Thelia、Sulu 等。内核内部定义了一个以请求开始并以响应结束的工作流。它解析控制器、参数并使用 handle() 方法获取响应。事件驱动 HttpKernel 工作流中的所有步骤。

Http基金会

HttpFoundation 组件负责将面向对象的层添加到 HTTP 规范中。作为每个 HTTP 请求一部分的全局变量,如 GET、POST、COOKIE、SESSION 等,都包含在面向对象的层中。要安装此组件,请输入以下命令:

$ composer require symfony/HTTP-foundation

DoctrineBundle

要了解 DoctrineBundle,我们需要知道什么是 Doctrine。

Doctrine 是一个项目或一组提供持久服务的 PHP 库。它包含 ORM(对象关系映射器)和数据库抽象层(DBAL)。它使用 Doctrine 查询语言 (DQL)(SQL 的面向对象对应物)来编写数据库查询。使用 Doctrine,无需存储和维护复杂的 XML 数据库模式。 

DoctrineBundle 将 ORM 和 DBAL 层集成到 Symfony 应用程序中。你还将获得一组控制台命令、配置选项和 Web 调试工具栏收集器。要安装捆绑包,请键入:

$ composer require doctrine/doctrine-bundle

例如,要获取特定于数据库的包,如果你想要 DoctrineMongoDBBundle,则应将特定包添加到 composer.json 文件中:

"require": {
       "doctrine/mongodb-odm-bundle": "^3.0"
    },

然后使用 compose.json 文件目录(位置)中的 update 命令安装依赖项:

$ php composer.phar update doctrine/mongodb-odm-bundle

如何下载和安装 Symfony

要在你的机器上安装 Symfony,你应该有 PHP 5.4 或更高版本。除此之外,最好有一个像 WAMP 或 Microsoft IIS for Windows、MAMP for Mac、LAMP for Linux 或 XAMP/Nginx(多平台)这样的网络服务器。 

Symfony框架使用示例:你可以使用以下命令通过命令行直接安装安装程序:

$mkdir -p /usr/local/bin 

$curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony 

$chmod a+x /usr/local/bin/symphony

一旦我们安装了安装程序,我们就可以创建一个新的应用程序:

symfony new <our_app_name>

执行此命令后,Symfony 将下载到你的系统上,并且项目将使用其目录“first app/”创建。 

要运行应用程序,我们需要启动服务器:

cd <our_app_name> 

PHP bin/console server:run

查看是否安装成功,打开浏览器访问localhost:8080。你应该会看到一条欢迎消息:

Symfony框架用法教程:完整的初学者指南

一旦安装了框架,你就可以安装所需的组件和捆绑包,如上一节所示!

简单的 Symfony 工作流程

如何使用Symfony框架?Symfony 框架提供了企业应用程序所需的所有功能。以下是 Symfony Web 应用程序如何工作的典型工作流程:

Symfony框架用法教程:完整的初学者指南

典型的工作流程包括以下步骤:

  • 用户通过浏览器发出应用请求,使用 HTTP 协议,即http://xyz.com
  • 反过来,浏览器将请求传递给 Apache、WebSphere 等 Web 服务器。
  • 然后服务器将用户请求转发到底层的 PHP 层。PHP 层反过来将其重定向到 Symfony Web 框架。 
  • 核心组件 HttpKernel 解析请求的控制器(我们在架构中看到了这一点)。它使用路由组件将请求转发到目标请求控制器。
  • 主要业务逻辑在控制器层执行。
  • 接下来,DoctrineORM 出现在画面中,控制器通过它与模型交互。DoctrineORM 负责连接到数据源。
  • 该过程完成后,控制器会自行生成响应或通过视图引擎创建响应。视图引擎只不过是一个负责将响应转换为 HTML 格式的组件。
  • 响应被发送回网络服务器。然后 Web 服务器将响应传输给用户(浏览器)。

Symfony 框架优势

Symfony 的优点是:

  1. 快节奏的开发:由于 Symfony 是一个基于组件的框架,它可以很容易地安装和使用。这使得开发更快、更高效,并帮助开发人员快速构建应用程序。
  2. 灵活性:借助依赖注入 (DI) 和事件调度等功能,Symfony 使开发人员可以轻松创建具有最高配置的复杂应用程序,从而为代码提供灵活性。
  3. 可扩展性:由于一切都是一个包并添加了独特的功能,开发人员可以重用包或添加到框架中。无需修改框架;只需配置捆绑包即可满足特定的项目要求。
  4. 稳定性:在最初的小故障之后,Symfony 的新版本已经相当稳定和可持续。它们还与公共 API 兼容。 
  5. 易于开发:开发人员无需担心次要功能并专注于他们的业务逻辑,而框架负责核心功能。Symfony 因其组件和基于包的架构而适用于从小到大的项目。Web 调试工具栏有助于在开发的早期阶段解决不同的问题,确保高质量的交付。

Symfony框架用法教程:Symfony 组件

Symfony 易于学习,因为它由组件和捆绑包组成,如果你了解核心组件和捆绑包,就可以轻松创建新的应用程序。一些重要的组件是:

1.查找器

它提供了通过迭代文件来快速搜索上述路径中的文件和目录的类。

2. 文件系统

提供执行基本文件操作的命令,例如创建文件或文件夹、检查文件是否存在等。

3. 类加载器

提供 PSR-0 和 PSR-4 类加载器标准的实现。它还可以自动加载类。 

4. 依赖注入

提供容器来处理依赖项。该框架使用服务容器广泛地使用该组件。

5. 事件调度器

提供基于事件的 PHP 编程。对象可以通过调度和监听事件来相互通信。  

6. 序列化器

通过Serializer,我们可以将PHP对象转换成JSON、二进制、XML等不同格式,再转换回PHP对象,不会丢失任何数据。

7.表达式语言

Symfony框架使用示例 - 提供一个表达式引擎,使代码更整洁、更小。ExpressionLanguage 包含两种处理表达式的方法:求值(在不编译为 PHP 的情况下对表达式求值)和编译(对表达式进行编译以便可以缓存然后求值)。它支持多种语法,如文字、对象、运算符、函数、数组等。

8. 工作流程

通过提供用于处理有限状态机的高级工具,允许进行高级 PHP 编程。 

9.Http基金会

为 PHP 默认提供的 HTTP 请求和响应对象提供一个面向对象的层。

10.表格

在 Web 应用程序中轻松创建表单

11. HttpKernel

负责 Web 应用程序的整个请求-响应过程。它是 Symfony 架构的主要组件。 

12. 路由

路由确定应处理特定请求的应用程序部分。它将手头的请求映射到一组预定义的配置变量。

Symfony 的组件还有很多,你可以访问 Symfony 官方网站查看所有组件。

Symfony 捆绑包

如何使用Symfony框架?包是按特定结构排列的文件和文件夹的集合。这种安排使得多个应用程序可以重用这些包。主要的 Symfony 应用程序被打包成一个包,称为 AppBundle。捆绑包的其他一些示例可以是 AdminBundle(管理站点)、HelloMobileBundle(你好移动应用程序)等。

该捆绑包包含以下内容:

  • 控制器:所有控制器都放在控制器文件夹中
  • 依赖注入:所有与 DI 和配置相关的文件都放在这里
  • 资源/配置:用于捆绑相关配置
  • Resources/public : CSS、JS、图片等,与bundle相关的请看这里。
  • Resources/view : 存储与 bundle 相关的所有视图模板
  • Tests:所有捆绑单元测试都存储在此文件夹中

你可以轻松自定义要用于应用程序的任何第三方包的一部分。检查Symfony 包覆盖以获取更多详细信息。 

Symfony框架用法教程总结

我们已经涵盖了足够的内容让你开始使用 Symfony。这篇文章应该已经引起了对 Symfony 的浓厚兴趣,并且你将能够遵循 Symfony 框架的基本概念。要学习Symfony,你应该了解PHP 框架。要学习 Symfony,请查看我们完整的课程和教程列表(其中一些是完全免费的!!)。你还可以阅读一些顶级书籍,例如A year with SymfonySymfony 权威指南。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: