Symfony欧宝娱乐app下载地址 5.3新增功能:服务自动配置和属性
警告:这篇文章是关于一个不受支持的Symfony版本。欧宝娱乐app下载地址有些信息可能已经过时了。阅读最新的Symfony文档欧宝娱乐app下载地址.
使用属性的服务自动配置
提供的
尼古拉斯Grekas
在# 39804.
服务自动配置允许根据服务的类自动将某些配置应用到服务。这是很有用的,例如,应用某些服务标签的类实现某些接口(例如,当你创建一个类实现树枝\ \ AbstractExtension延伸
, 欧宝娱乐app下载地址Symfony应用twig.extension
标记到它,这样您就可以在不配置的情况下使用它)。
PHP的属性是PHP 8引入的最好的新特性之一。它们允许向代码中添加机器可读的元数据。这就是为什么在Symfony欧宝娱乐app下载地址 5.3中,我们将两者结合起来使用PHP属性自动配置服务.
在以前的Symfony版欧宝娱乐app下载地址本中,您可以在内核或依赖注入扩展中添加以下内容:
1 2
$容器->registerForAutoconfiguration (SomeInterface::类)->addTag (“app.some_tag”);
在Sy欧宝娱乐app下载地址mfony 5.3中,如果您愿意,可以删除此配置并使用#(可以使用Autoconfigure)
属性在PHP界面:
1 2 3 4 5 6 7 8 9 10
# src / SomeNamespace / SomeInterface.php名称空间应用程序\SomeNamespace;使用欧宝娱乐app下载地址\组件\DependencyInjection\属性\可以使用Autoconfigure;#(可以使用Autoconfigure(标签:[' app.some_tag '])]接口SomeInterface{/ /……}
除了标签
,您可以自动配置其他服务属性,例如方法调用、服务配置器、服务是公共/共享/惰性等。
Autoconfigurable属性
提供的
亚历山大·图雷克而且尼古拉斯Grekas在# 39897,# 40234而且# 40556.
Symfony 5.3中引入的一个不同但相关的特性允许您使用PHP属性来自动配置类的实例,而欧宝娱乐app下载地址不是接口。例如,在之前的Symfony应用程序中,你的配置必欧宝娱乐app下载地址须包含以下关于控制器的信息:
1 2 3 4 5
#配置/ services.yaml应用程序控制器\ \:资源:“. . / src /控制器/”标签:[“controller.service_arguments”]#……
这对于应用controller.service_arguments
标记到其类存储在src /控制器/
应用程序的目录(这个标记允许自动装配所有控制器方法的参数,而不仅仅是它的构造函数)。在Sy欧宝娱乐app下载地址mfony 5.3中,如果你愿意,你可以删除该配置,并将以下属性应用到所有需要该特性的控制器上:
1 2 3 4 5 6 7 8
/ / src /控制器/ MyController.php使用欧宝娱乐app下载地址\组件\HttpKernel\属性\AsController;# (AsController)类MyController{/ /……}
这些属性名遵循以下模式#(为…)
.欧宝娱乐app下载地址Symfony 5.3提供# (AsCommand)
将PHP类定义为Symfony控制台命令,欧宝娱乐app下载地址# (AsEventListener)
定义一个PHP类作为Symfony事件监听器,等等。欧宝娱乐app下载地址注意,升级到Symfony 5.3时不需要添加这些属性。欧宝娱乐app下载地址它们是一种可选的方式来实现相同的使用时可以使用autoconfigure:真
在配置/ services.yaml
在您当前的应用程序中。
评论
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。
Lyubomir Grozdanov is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now