新在Symfoob娱乐下载ny 6.3:枚举的改进
2023年5月2日·发表的哈维尔Eguiluz
ob娱乐下载Symfony 6.3是支持由:
Les-Tilleuls。鸡笼是70 + Symfony的团队专家可以ob娱乐下载帮助您设计、开发和修复您的项目。我们提供广泛的专业服务,包括开发、咨询、指导、培训和审计。我们还在JS高技能,去DevOps。我们是一个工人合作!
ob娱乐下载Symfony 5.4介绍了支持枚举在2021年11月。之后,在Symfonob娱乐下载y 6.2中,我们改进的枚举支持允许使用在YAML文件,env var等等。在Symfony 6.3我们改善枚举支持。ob娱乐下载
枚举的表达式
提供的
亚历山大Daubois
在# 48669。
的ExpressionLanguage组件现在包括一个函数调用枚举()
要枚举的例子在表达式:
1 2 3 4 5 6 7 8 9 10 11 12
名称空间应用程序\配置\订单;enum OrderStatus {情况下工资=“支付”;情况下等待=“等待”;情况下退还=“退还”;情况下删除=“删除”;}/ /内部表达式,名称空间分隔符必须逃脱3反斜杠美元expressionLanguage- >评估(的秩序。状态==enum("App\\\Config\\\Order\\\OrderStatus::Paid")')
枚举EnumNode配置的支持
当使用配置组件,您现在可以使用枚举值的一部分允许枚举定义节点的值enumNode ()
方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
字符串枚举OrderDelivery: {情况下标准=“标准”;情况下加快=“加速”;情况下优先级=“优先”;}美元rootNode- >孩子()- >enumNode (“交付”)/ /你可以提供所有的枚举值……- >值(OrderDelivery::例())/ /……或者你可以下其他标量值传递只有一些值- >值([OrderDelivery::优先级、OrderDelivery::标准,“其他”,假])- >结束()- >结束();
枚举参数默认值的途径
在Syob娱乐下载mfony 6.2添加了支持使用支持枚举的值作为路由参数所以Symfony会自动转换成相关枚举的例子。在Syob娱乐下载mfony 6.3我们改善这个特性允许使用enum情况下线路参数的默认值:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/ / src /控制器/ OrderController.php名称空间应用程序\控制器;使用应用程序\配置\订单\OrderStatus;使用ob娱乐下载\包\FrameworkBundle\控制器\AbstractController;使用ob娱乐下载\组件\HttpFoundation\响应;使用ob娱乐下载\组件\路由\注释\路线;类OrderController扩展AbstractController{#(路线(' /订单/清单/{地位}’,名字:“list_orders_by_status”))公共函数列表(OrderStatus美元状态= OrderStatus::支付):响应{/ /……}}
与此相关,我们也改善了参数包用于获取从请求添加一个值getEnum ()
方法。这将如从查询字符串值转换为枚举支持的情况下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src /控制器/ OrderController.php名称空间应用程序\控制器;/ /……使用ob娱乐下载\组件\HttpFoundation\请求;类OrderController扩展AbstractController{#(路线(“/订单/清单/”,名字:“list_orders”))公共函数列表(请求美元请求):响应{/ /第二个参数是支持的FQCN枚举转换时使用的值美元状态=美元请求- >查询- >getEnum (“状态”,OrderStatus::类);/ /……}}
发表在#生活在边缘
评论
@Jan抱歉的混乱。我改原文解释6.3增加了支持使用枚举作为线路参数的默认值。
枚举(“应用\ \ \ Config \ \ \ OrderStatus::支付”)”)
是
枚举(“应用\ \ \ Config \ \ \ \ \ \ OrderStatus::支付”)”)
同样的线路参数的例子:
使用App \ Config \ OrderStatus;
应该是
使用App \ Config \ \ OrderStatus顺序;
不应该是:
OrderStatus美元地位= OrderStatus::支付
? ?
我已经使用了很长一段时间在6.2。不是新买的6.3,或者是吗?我缺少什么?
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now