新在Symfoob娱乐下载ny 6.1:简单束扩展和配置
2022年5月6日·发表的哈维尔Eguiluz
提供的
Yonel Ceruto
在# 43701。
ob娱乐下载Symfony包Symfony应用程序提供随时可用的特性。ob娱乐下载在某些情况下,包包括自己的配置,甚至可以扩展应用程序配置添加新选项。
这些扩展和配置功能是通过专用的类实现的扩展或实现其他Symfony类。ob娱乐下载这个过程是众所周知的,而不是复杂的,但有点冗长和繁琐。这就是为什么在Symfonyob娱乐下载 6.1我们引入简单的方法来配置和扩展包。
这是有史以来最大的变化我们包系统你会喜欢它的。在Syob娱乐下载mfony 6.1中,您可以定义的配置和扩展包直接在主包类,不创建任何其他类。
让我们考虑一个喷火
包定义了以下主要包类:
1 2 3 4 5 6 7
名称空间Acme\包\FooBundle;使用ob娱乐下载\组件\HttpKernel\包\包;类FooBundle扩展包{}
首先,你需要改变它的基类AbstractBundle
:
1 2 3 4 5 6
/ /……使用ob娱乐下载\组件\HttpKernel\包\AbstractBundle;类FooBundle扩展AbstractBundle{}
现在,你想定义语义配置这个包吗?忘记了配置
类,TreeBuilder
对象,“扩展别名”等等。只是定义一个配置()
方法在你的包类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
类FooBundle扩展AbstractBundle{/ /……公共函数配置(DefinitionConfigurator美元定义):无效{/ /加载配置从一个文件中定义美元定义- >导入(“. . / config / definition.php”);/ /加载配置定义从多个文件(当它太长可以把它)美元定义- >导入(“. . / config /定义/ * . php”);/ /如果配置很短,可以考虑添加在这个类美元定义- >rootNode ()- >孩子()- >scalarNode (“foo”)- >defaultValue (“酒吧”)- >结束()- >结束();}}
的根键包配置自动从你的包名称(确定FooBundle
这将是喷火
)。如果你想改变它,现在你可以简单定义以下属性包的类:
1 2 3 4 5 6
类FooBundle扩展AbstractBundle{受保护的字符串美元extensionAlias=“极致”;/ /……}
最后,如果你想配置您的包扩展或添加/预先考虑应用程序中配置选项,你不再需要定义一个扩展
类,使用XmlFileLoader
和FileLocator
加载配置文件,等定义loadExtension ()
和/或prependExtension ()
你包的方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32
类FooBundle扩展AbstractBundle{/ /……/ /配置美元是你通常的包配置过程/ / ExtensionInterface::负荷(),但已经合并和加工公共函数loadExtension(数组美元配置,ContainerConfigurator美元容器,ContainerBuilder美元构建器):无效{美元容器- >参数()- >集(“foo”,美元配置(“foo”]);美元容器- >导入(“. . / config / services.php”);如果(“酒吧”= = =美元配置(“foo”){美元容器- >服务()- >集(解析器::类);}}公共函数prependExtension(ContainerConfigurator美元容器,ContainerBuilder美元构建器):无效{/ /预先考虑一些配置选项美元构建器- >prependExtensionConfig (“框架”,(“缓存”= > [“prefix_seed”= >“foo / bar”)));/ /添加一些配置选项美元容器- >扩展(“框架”,(“缓存”= > [“prefix_seed”= >“foo / bar”),)/ /添加选项中定义一些文件(使用任何配置格式)美元容器- >导入(“. . / config /包/ cache.php”);}}
我们除了兴奋这个新功能!我们希望你也喜欢它,开始使用它只要你升级到6.1 Symfony。ob娱乐下载
发表在#生活在边缘
评论
真的很高兴有包中所有的类。我期待当创建:https://github.com/symfony/symfony/issues/45607但认为他们从未想混合起来ob娱乐下载,因为包类总是加载。使用AbstractBundle有性能影响吗?
Tac Tacelosky
说5月8日,2022年在他们
卫矛!瑞安也许可以说服更新https://symfonycasts.com/screencast/syob娱乐下载mfony-bundle使用Symfony 6.1,应该是相当短,容易与这些改进。有一个包的例子使用AbstractBundle ?
Yonel Ceruto
说5月9日,2022年在00:27
提到这些改进是有效的也可用于bundle-less方法,在这种情况下,您可以使用Symfony \扩展组件\ DependencyInjection \ \ AbstractExtension用完全相同的方法解释,直接你的内核中注册该ob娱乐下载扩展类(尤其是对于那些应用程序添加自己的配置/扩展)
@Andy可以看到拉请求的描述:
https://github.com/ob娱乐下载symfony/symfony/pull/43701
https://github.com/ob娱乐下载symfony/symfony/pull/43701
Bastien PELLETIER-GARNIER
说5月10日,2022年在09:06
为这个新功能呢!
Grzegorz Korba
说在6月30日,2022年在14:27
伟大的进步!谢谢你!
Younes KHOUBZA is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now