捆绑系统

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 5.0,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

捆绑系统

谨慎

在Syob娱乐下载mfony 4.0之前的版本中,建议使用包组织您自己的应用程序代码。不再推荐这样做,bundle应该只用于在多个应用程序之间共享代码和功能。

捆绑包类似于其他软件中的插件,但甚至更好。Symfony框架的核心特性是通过捆绑包(ob娱乐下载FrameworkBundle, SecurityBundle, DebugBundle等)实现的。它们还用于通过在应用程序中添加新特性第三方包

应用程序中使用的包必须在每个节点上启用环境配置/ bundles.php文件:

12 3 4 5 6 7 8 9 10 11 12 13
/ /配置/ bundles.php返回// 'all'表示该包对任何Symfony环境都是启用的ob娱乐下载ob娱乐下载Symfony \包\ FrameworkBundle \ FrameworkBundle::Class => [“所有”= >真正的), ob娱乐下载Symfony \包\ SecurityBundle \ SecurityBundle::Class => [“所有”= >真正的), ob娱乐下载Symfony \包\ TwigBundle \ TwigBundle::Class => [“所有”= >真正的), ob娱乐下载Symfony \包\ MonologBundle \ MonologBundle::Class => [“所有”= >真正的), ob娱乐下载Symfony \包\ SwiftmailerBundle \ SwiftmailerBundle::Class => [“所有”= >真正的),原则\包\ DoctrineBundle \ DoctrineBundle::Class => [“所有”= >真正的),包Sensio赞助\ \ FrameworkExtraBundle \ SensioFrameworkExtraBundle::Class => [“所有”= >真正的),//这个bundle只在'dev'和'test'中启用,所以不能在'prod'中使用它ob娱乐下载Symfony \包\ WebProfilerBundle \ WebProfilerBundle::Class => [“开发”= >真正的“测试”= >真正的]];

提示

在默认的Symfony应用ob娱乐下载程序中使用ob娱乐下载Symfony Flex,当你安装/删除它们时,包会自动启用/禁用,所以你不需要查看或编辑bundles.php文件。

创建Bundle

本节创建并启用一个新bundle,以显示只需要几个步骤。新的捆绑包称为AcmeTestBundle,其中Acme部分只是一个虚假的名称,它应该被一些代表您或您的组织的“供应商”名称所取代(例如,ABCTestBundle代表一些公司名称美国广播公司).

首先创建一个src / Acme / TestBundle /目录,并添加一个名为AcmeTestBundle.php

1 2 3 4 5 6 7 8
/ / src / Acme / TestBundle / AcmeTestBundle.php名称空间应用程序AcmeTestBundle使用ob娱乐下载组件HttpKernelAcmeTestBundle扩展{}

提示

名称AcmeTestBundle遵循标准Bundle命名约定.您还可以通过将这个类命名为TestBundle(并命名文件)来选择将包的名称缩短为简单的TestBundleTestBundle.php).

这个空类是创建新包所需的唯一部分。虽然通常是空的,但这个类功能强大,可以用来自定义包的行为。现在你已经创建了这个bundle,启用它:

1 2 3 4 5
/ /配置/ bundles.php返回/ /……App \ Acme \ TestBundle \ AcmeTestBundle::Class => [“所有”= >真正的]];

虽然它还没有做任何事情,但AcmeTestBundle现在已经可以使用了。

Bundle目录结构

包的目录结构是为了帮助保持所有Symfony包之间的代码一致。ob娱乐下载它遵循一套惯例,但在需要时可以灵活调整:

控制器/
包含bundle的控制器(例如。RandomController.php).
DependencyInjection /
保存某些依赖注入扩展类,可以导入服务配置,注册编译器通道或更多(这个目录不是必需的)。
资源/ config /
保存配置,包括路由配置(例如:routing.yaml).
资源/视图/
保存按控制器名称组织的模板(例如:随机/ index.html.twig).
资源/公共/
包含web资产(图像,样式表等),并被复制或象征性链接到项目中公共/通过资产:安装控制台命令。
测试/
保存包的所有测试。

一个bundle可以和它实现的特性一样大或一样小。它只包含您需要的文件,没有其他内容。

在阅读指南的过程中,您将学习如何将对象持久化到数据库、创建和验证表单、为应用程序创建翻译、编写测试等等。每个组件在包中都有自己的位置和角色。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。