新在Symfo欧宝娱乐app下载地址ny 5.2:控制器参数属性
2020年10月8日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony的版本。欧宝娱乐app下载地址其中一些信息可能是过时了。阅读最近的Symfony文档欧宝娱乐app下载地址。
提供的
杰罗姆Vasseur
在# 37829。
PHP 8将在几周后发布,它将包括一个改变游戏规则的功能称为属性(或注解)。欧宝娱乐app下载地址Symfony 5.2已经包括属性定义路线和所需的依赖项,但我们继续添加属性支持有意义的地方。
这就是为什么在Symfony欧宝娱乐app下载地址 5.2还可以使用PHP属性控制器参数。多亏了这个新功能,我们引入了一个# (CurrentUser)
属性将一个控制器参数转化为代表的对象当前登录用户:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/ / src /控制器/ SomeController.php名称空间应用程序\控制器;使用应用程序\实体\MyUser;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\安全\Http\属性\CurrentUser;类SomeController扩展AbstractController{公共函数指数(# CurrentUser MyUser美元用户){/ /……}}
在实践中,这是通过添加一个新的方法ArgumentMetadata
对象传递给参数值解析器。如果你定义自己的解析器,您现在可以使用getAttribute ()
方法,该方法返回的属性集的参数(或零
如果没有设置)。
发表在#生活在边缘
评论
皮埃尔Breteche
10月8日说,2020年在北京时间
这是为了取代ParamConverter和其他控制器参数相对从FrameworkExtra注释吗?
目前,参数解析器只告诉你一个论点的基本属性:数据类型,默认值,如果可以为空,如果它是可变的,等等。
由于属性,您还可以通过“配置选项”这些参数。例如你可以创建“#(自动装配)”属性来定义自己的自动装配机制,或者你可以定义“#【SomeAttribute (SomeClass::类、Some_CONSTANT 24 * 3600)]“评估和常量表达式并将它们传递给解析器。
由于属性,您还可以通过“配置选项”这些参数。例如你可以创建“#(自动装配)”属性来定义自己的自动装配机制,或者你可以定义“#【SomeAttribute (SomeClass::类、Some_CONSTANT 24 * 3600)]“评估和常量表达式并将它们传递给解析器。
Petru Szemereczki
10月8日说,2020年在37
@Massimiliano因为属性是一个语言功能,在PHP中处理的属性是由C解释器,一些额外的处理在用户定义的空间(PHP),所以可能有好处的性能、灵活性和更少的代码。
@Stefan的语法属性改变了几次从最初提议。这是最后的投票选择明确的语法:https://wiki.php.net/rfc/shorter_attribute_syntax
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now