包系统

包系统

谨慎

在4.欧宝娱乐app下载地址0之前的Symfony版本中,建议使用bundle来组织您自己的应用程序代码。现在不建议这样做,bundle应该只用于在多个应用程序之间共享代码和特性。

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

应用程序中使用的包必须启用环境配置/ bundles.php文件:

/ /配置/ bundles.php返回(// 'all'表示bundle为任何Symfony环境启用欧宝娱乐app下载地址欧宝娱乐app下载地址Symfony \包\ FrameworkBundle \ FrameworkBundle::= >(“所有”= >真正的),欧宝娱乐app下载地址Symfony \包\ SecurityBundle \ SecurityBundle::= >(“所有”= >真正的),欧宝娱乐app下载地址Symfony \包\ TwigBundle \ TwigBundle::= >(“所有”= >真正的),欧宝娱乐app下载地址Symfony \包\ MonologBundle \ MonologBundle::= >(“所有”= >真正的),欧宝娱乐app下载地址Symfony \包\ SwiftmailerBundle \ SwiftmailerBundle::= >(“所有”= >真正的),学说\包\ DoctrineBundle \ DoctrineBundle::= >(“所有”= >真正的),Sensio赞助\包\ FrameworkExtraBundle \ SensioFrameworkExtraBundle::= >(“所有”= >真正的),//这个bundle只在'dev'和'test'中启用,所以你不能在'prod'中使用它欧宝娱乐app下载地址Symfony \包\ WebProfilerBundle \ WebProfilerBundle::= >(“开发”= >真正的,“测试”= >真正的),];

提示

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

创建一个包

本节创建并启用一个新bundle,以显示只需要几个步骤。新bundle被称为acmetstbundle,其中Acmepart是一个示例名称,它应该被一些代表你或你的组织的“供应商”名称(例如,ABCTestBundle用于一些命名的公司美国广播公司)。

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

/ / src / Acme / TestBundle / AcmeTestBundle.php名称空间App \ Acme \ TestBundle;使用欧宝娱乐app下载地址Symfony \ HttpKernel \包\ \组件包;AcmeTestBundle扩展{}

提示

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

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

/ /配置/ bundles.php返回(/ /……App \ Acme \ TestBundle \ AcmeTestBundle::= >(“所有”= >真正的),];

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

包目录结构

包的目录结构旨在帮助保持所有Symfony包之间的代码一致性。欧宝娱乐app下载地址它遵循一系列惯例,但在需要时可以灵活调整:

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

一个bundle可以根据它实现的特性大小而定。它只包含您需要的文件,其他什么也不包含。

在浏览这些指南时,您将学习如何将对象持久化到数据库、创建和验证表单、为应用程序创建翻译、编写测试等等。它们在bundle中都有自己的位置和角色。

这项工作,包括代码样本,是在一个创作共用BY-SA 3.0许可证。