包系统
编辑该页面包系统
谨慎
在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 \ \测试\ \”:“测试/”}}}