捆绑系统
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 5.2,现已不再维护。
读本页的更新版本用于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名称空间应用程序\Acme\TestBundle;使用ob娱乐下载\组件\HttpKernel\包\包;类AcmeTestBundle扩展包{}
提示
名称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可以和它实现的特性一样大或一样小。它只包含您需要的文件,没有其他内容。
在阅读指南的过程中,您将学习如何将对象持久化到数据库、创建和验证表单、为应用程序创建翻译、编写测试等等。每个组件在包中都有自己的位置和角色。