新在Symfoob娱乐下载ny 5.4:序列化器的改进
2021年11月30日·发表的哈维尔Eguiluz
ob娱乐下载Symfony 5.4是支持通过私人Packagist。私人Packagist是一种快速、可靠和安全的作曲家私人包存储库。它反映你所有的开源依赖性更好的可用性和监控安全漏洞。
ob娱乐下载Symfony 5.4发布昨天,但是我们仍然有一些博客等待显示其主要新特性。在这篇文章中,我们强调了改进添加到序列化器组件。
在全球范围内配置的序列化器上下文
提供的
安东尼Bluchet
在# 38542。
的序列化器上下文控制资源的(反)序列化。在当前的Symfonyob娱乐下载的版本中,这种情况下传递给所有标准化者。在Syob娱乐下载mfony 5.4我们改善序列化器组件配置允许您在全球范围内配置默认的上下文。例如:
1 2 3 4
#配置/包/ serializer.yaml序列化器:default_context:enable_max_depth:真正的
这个例子显示了YAML配置,但是您还可以使用XML和PHP。
自定义序列化器Symfony信使ob娱乐下载
json编码的消息了ob娱乐下载Symfony的信使预计将有以下结构:
1 2 3 4 5 6
{“消息”:{“身体”:{},“头”:[]}}
然而,当不同的第三方消费产生的消息,你不会得到消息结构。这就是为什么在Symfonyob娱乐下载 5.4可以使用自己的序列化器JSON-decode消息。
收集反规范化类型错误
提供的
格雷戈勒Pineau
在# 42502。
在以前的序列化器版本,当使用PHP类型属性在某些情况下可以看到错误。例如,考虑以下简单的DTO:
1 2 3 4 5 6
类MyDto{公共字符串美元property1;公共int美元property2;公共数组美元property3;}
如果你的JSON数据如下:
1 2 3 4 5
{“property1”:零,“property2”:7,“property3”:[]}
在反序列化数据,您将看到一个500错误的类型property1
是字符串
你通过了零
价值。在Syob娱乐下载mfony 5.4我们改善这种行为由于新的COLLECT_DENORMALIZATION_ERRORS
选择。
如果你通过这个选项,PHP异常将包括错误的详细清单。然后你可以处理它像下面的例子,处理一些API:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24
#(路线(/ api,方法:['文章']))公共函数apiPost(SerializerInterface美元序列化器,请求美元请求):响应{试一试{美元dto=美元序列化器- >反序列化(美元请求- >getContent (), MyDto::类,json的,(DenormalizerInterface::COLLECT_DENORMALIZATION_ERRORS = >真正的]);}抓(PartialDenormalizationException美元e){美元违反=新ConstraintViolationList ();/ * *@varNotNormalizableValueException * /foreach(美元e- >getErrors ()作为美元异常){美元消息= sprintf (的类型必须是一个“% s”(“% s”)。”内爆(”、“,美元异常- >getExpectedTypes ()),美元异常- >getCurrentType ());美元参数= [];如果(美元异常- >canUseMessageForUser ()) {美元参数(“提示”]=美元异常- >getMessage ();}美元违反- >add (新ConstraintViolation (美元消息,”,美元参数,零,美元异常- >getPath (),零));};返回美元这- >json (美元违反,400年);}返回美元这- >json (美元dto);}
发表在#生活在边缘
评论
罗兰Franssen
说在11月30日,2021年在13:31
# 1
叫我旧的但是,验证($ rawPayload);反序列化(rawPayload美元,TypedDto::类)为我工作。
jeremyFreeAgent
说在11月30日,2021年在19:39
# 2
谢谢格雷戈勒!再次添加事情改善DX Symfony新项目引导,避免做相同的事情一次又一次地从一个程序ob娱乐下载到另一个地方。
拿单页
说在2021年12月1日在00:55
# 3
@Roland Franssen完全同意你当你控制反序列化逻辑,然而这个错误集合功能的上下文中是惊人的API平台序列化完成第一,和验证第二个实例化的dto。在这种情况下,我认为这将有助于API平台社区做伟大的事情:)欧宝体育平台怎么样
罗兰Franssen
说在2021年12月1日在09:23
# 4
所有阅读、受益对象设计:“验证水化前”)
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。