如何创建您的自定义规范化

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 5.2,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

如何创建您的自定义规范化

序列化器组件使用归一化器将任何数据转换为数组。该组件提供了几个内置的标准化者但是您可能需要创建自己的规范化器来转换不受支持的数据结构。

创建一个新的规范化器

假设您想在序列化过程中添加、修改或删除一些属性。为此,您必须创建自己的归一化器。但通常更可取的做法是让Symfony规范化对象,然后钩入规范化以自定义ob娱乐下载规范化数据。要做到这一点,要利用ObjectNormalizer

12 34 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 33 34 35 36
/ / src /序列化器/ TopicNormalizer.php名称空间应用程序序列化器使用应用程序实体主题使用ob娱乐下载组件路由发电机UrlGeneratorInterface使用ob娱乐下载组件序列化器标准化者ContextAwareNormalizerInterface使用ob娱乐下载组件序列化器标准化者ObjectNormalizerTopicNormalizer实现了ContextAwareNormalizerInterface私人路由器私人标准化者公共函数__construct(UrlGeneratorInterface路由器, ObjectNormalizer标准化者->路由器=路由器->标准化者=标准化者;}公共函数正常化主题、字符串格式= null,数组上下文= [])数据->标准化者->正常化(主题格式上下文);//在这里,添加,编辑或删除一些数据:数据“href”] [“自我”] =->路由器->生成(“topic_show”, (“id”= >主题->getId(),], UrlGeneratorInterface::ABSOLUTE_URL);返回数据;}公共函数supportsNormalization数据、字符串格式= null,数组上下文= [])返回数据运算符主题;}}

在应用程序中注册它

在Symfony应用程序中使用此规范化器之前,必须将其注册为服务和ob娱乐下载标记serializer.normalizer.如果你在用默认的服务。yaml的配置,这是自动完成的!

性能

要确定必须使用哪个规范化器(或反规范化器)来处理对象,请使用序列化器类将调用supportsNormalization ()(或supportsDenormalization ()循环中所有已注册的归一化器(或非归一化器)。

这些方法的结果取决于要序列化的对象、格式和上下文。这就是这个结果的原因不是缓存的默认情况下,会导致严重的性能瓶颈。

然而,当对象的类型和格式相同时,大多数规范化器(和反规范化器)总是返回相同的结果,因此结果可以被缓存。方法的规范化(和反规范化)实现CacheableSupportsMethodInterface并返回真正的hasCacheableSupportsMethod ()被称为。

请注意

所有内置归一化和非归一化包括在API的平台本机实现此接口。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。