如何使用序列化器吗

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 3.3,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

如何使用序列化器吗

在进行序列化和反序列化对象和不同格式(例如JSON或XML)是一个非常复杂的话题。ob娱乐下载Symfony提供了序列化器组件给你一些工具,您可以利用您的解决方案。

事实上,在你开始之前,熟悉序列化器,标准化者和编码器通过阅读序列化器组件

激活序列化器

序列化器默认服务不可用。打开它,激活它在您的配置:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
# app / config / config.yml框架:#……序列化器:{enable_annotations:真正的}#或者,如果你不想使用注释#序列化器:{启用:真}

使用序列化器服务

一旦启用,序列化器服务可以被注入在你需要的任何服务或它可以用在一个控制器:

1 2 3 4 5 6 7 8 9 10 11 12 13
/ / src / AppBundle /控制器/ DefaultController.php名称空间AppBundle\控制器;使用ob娱乐下载\\FrameworkBundle\控制器\控制器;使用ob娱乐下载\组件\序列化器\SerializerInterface;DefaultController扩展控制器{公共函数indexAction(SerializerInterface美元序列化器){/ /保持阅读用法示例}}

添加标准化者和编码器

一旦启用,序列化器服务将在容器中。它附带了一组有用的编码器标准化者

启用了编码器支持以下格式:

以及以下标准化者:

自定义标准化者和/或编码器也可以通过标记他们serializer.normalizerserializer.encoder。还可以设置的优先级标记为了决定匹配的顺序。

这里有一个例子如何加载GetSetMethodNormalizer,更快的替代ObjectNormalizer当数据对象总是使用getter和setter方法:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
# app / config / services.yml服务:get_set_method_normalizer:类:ob娱乐下载Symfony \组件\ \标准化者\ GetSetMethodNormalizer进行序列化公众:标签:(serializer.normalizer)

使用串行化组注释

启用序列化组注释使用以下配置:

  • YAML
  • XML
  • PHP
1 2 3 4 5
# app / config / config.yml框架:#……序列化器:enable_annotations:真正的

接下来,添加@Groups注释你的类和序列化时选择使用哪一个组:

1 2 3 4
美元json=美元序列化器- >序列化(美元someObject,json的,数组(“组织”= >数组(“group1”)));

除了@Groups注释,序列化器组件还支持Yaml或XML文件。这些文件被存储在一个时自动加载以下位置:

  • serialization.ymlserialization.xml文件资源/ config /包的目录;
  • 所有* .yml* . xml文件资源/ config /序列化/目录的一个包。

使元数据缓存

元数据使用的序列化器组件,如团体可以缓存来提高应用程序的性能。任何服务实现学说\常见\缓存\缓存可以使用接口。

一个服务利用APCu(和APC PHP内置< 5.5)。

  • YAML
  • XML
  • PHP
1 2 3 4 5
# app / config / config_prod.yml框架:#……序列化器:缓存:serializer.mapping.cache.apc

使一个名字转换器

的使用名字转换器服务可以被定义在配置使用name_converter选择。

内置的CamelCase转换器snake_case名称可以通过使用吗serializer.name_converter.camel_case_to_snake_case值:

  • YAML
  • XML
  • PHP
1 2 3 4 5
# app / config / config.yml框架:#……序列化器:name_converter:“serializer.name_converter.camel_case_to_snake_case”

更进一步的序列化器

ApiPlatform提供了一个API系统支持JSON-LD九头蛇核心词汇超媒体格式。它是建立在Symfony框架及其序列化器组件。ob娱乐下载它提供了定制的标准化者和一个定制的编码器,定制的元数据和缓存系统。

如果你想利用Symfony序列化器组件的全部威力,看看这个包是如何工作的。ob娱乐下载

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。