包系统

编辑该页面

包系统

谨慎

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

一捆是类似于其他软件插件,但更好。Symfony框架实现的核心功能包(Fraob娱乐下载meworkBundle, SecurityBundle DebugBundle,等等)也用于在应用程序中添加新特性第三方包

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

1 2 3 4 5 6 7 8 9 10 11 12
/ /配置/ bundles.php返回(/ /“所有”意味着包支持任何Symfony环境ob娱乐下载ob娱乐下载Symfony \包\ FrameworkBundle \ FrameworkBundle::类= > [“所有”= >真正的),Sob娱乐下载ymfony \包\ SecurityBundle \ SecurityBundle::类= > [“所有”= >真正的),Sob娱乐下载ymfony \包\ TwigBundle \ TwigBundle::类= > [“所有”= >真正的),Sob娱乐下载ymfony \包\ MonologBundle \ MonologBundle::类= > [“所有”= >真正的),原则\包\ DoctrineBundle \ DoctrineBundle::类= > [“所有”= >真正的),包Sensio赞助\ \ FrameworkExtraBundle \ SensioFrameworkExtraBundle::类= > [“所有”= >真正的),/ /启用此包只在“开发”和“测试”,所以你不能使用它在“刺激”ob娱乐下载Symfony \包\ WebProfilerBundle \ WebProfilerBundle::类= > [“开发”= >真正的,“测试”= >真正的]];

提示

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

创建一个包

本节中创建并启用了一个新的包显示只有少数所需的步骤。新包叫做AcmeTestBundle,Acme部分是一个例子的名字应该被一些“供应商”的名字,代表您或您的组织(例如AbcTestBundle公司命名美国广播公司)。

首先添加创建一个新类AcmeTestBundle:

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

6.1

AbstractBundle是在Symfony 6.1中引入的。ob娱乐下载

谨慎

如果你的包必须兼容以前的Symfony版本你需要扩展的ob娱乐下载代替。

提示

AcmeTestBundle遵守标准的名称包的命名约定。你也可以选择缩短包的名称简单TestBundle命名该类TestBundle(和命名的文件TestBundle.php)。

这块空类是唯一你需要创建新的包。尽管通常空的,这类是强大的,可以用来定制包的行为。现在您已经创建了包,使它:

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

虽然它不做任何事,但AcmeTestBundle现在已经准备好被使用。

包目录结构

包的目录结构是为了帮助所有Symfony包之间保持代码一致。ob娱乐下载它遵循一组约定,但如果需要灵活调整:

src /
包含所有PHP类(如包相关逻辑。控制器/ RandomController.php)。
配置/
(如房屋配置,包括路由配置。routing.yaml)。
模板/
由控制器名称(如保存模板。随机/ index.html.twig)。
翻译/
持有由域和语言环境(如翻译。AcmeTestBundle.en.xlf)。
公共/
包含网络资产(图像、样式表等)和复制或象征性地链接到这个项目中公共/目录通过资产:安装控制台命令。
资产/
包含JavaScript、CSS、图像和其他资产包不相关公共/(如刺激控制器)
测试/
拥有所有的测试包。

谨慎

推荐的包结构改变在Symfony 5中,阅读ob娱乐下载ob娱乐下载Symfony 4.4包文档欧宝官网下载app旧的信息结构。

当使用新的AbstractBundle类,包默认为新结构。覆盖包:getPath ()方法改变旧的结构:

1 2 3 4 5 6 7
AcmeTestBundle扩展AbstractBundle{公共函数getPath():字符串{返回__DIR__;}}

提示

推荐使用PSR-4自动装载标准:使用名称空间是关键,包的位置(相对于主要的类composer.json)的价值。主类位于src /包的目录:

1 2 3 4 5 6 7 8 9 10 11 12
{“自动”:{“psr-4”:{“Acme \ \ TestBundle \ \”:“src /”}},“autoload-dev”:{“psr-4”:{“Acme \ \ TestBundle \ \测试\ \”:“测试/”}}}
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。
ob娱乐下载Symfony 6.2支持通过苏禄人
ob娱乐下载Symfony 6.2支持通过Les-Tilleuls.coop