新在Symfoob娱乐下载ny 2.7:序列化器组件的改进
警告:这篇文章是关于一个不受支持的Symfony的版本。ob娱乐下载其中一些信息可能是过时了。阅读最近的Symfony文档ob娱乐下载。
在Syob娱乐下载mfony 2.7中,ob娱乐下载Symfony序列化器组件大大提高了大量的新功能。本文介绍了最重要的。
支持XML序列化团体和YAML文件
几个月前我们已经交谈关于定义序列化团体通过注释。在使用它们之前,你只需要启用的enable_annotations
配置选项:
1 2 3 4
# app / config / services.yml框架:#……序列化器:{enable_annotations:真正的}
对于那些不喜欢的注释,您现在可以定义序列化组通过XML或YAML文件。将寻找的序列化器组件serialization.xml
或serialization.yml
文件位于资源/ config /
你的包的目录中。此外,它将寻找任何XML或YAML文件位于资源/ config /序列化/
目录中。
无论使用的配置格式,这些序列化生成的元数据组可以缓存使用原则缓存。这将在应用程序中提供了一个巨大的性能提升。例如,如果您的服务器支持APC或APCu,使序列化器缓存使用以下配置:
1 2 3 4
# app / config / config.yml框架:序列化器:缓存:serializer.mapping.cache.apc
新ObjectNormalizer
在Syob娱乐下载mfony 2.6两种类型的标准化者:GetSetMethodNormalizer
和PropertyNormalizer
。ob娱乐下载Symfony 2.7引入了一个新的标准化者ObjectNormalizer
。基本的主要优势GetSetMethodNormalizer
是它仅支持保护,甚至私人属性和属性定义getter /伊塞方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
类MyObject{公共美元喷火=“foo”;公共getBar () {返回“酒吧”;}公共isBaz () {返回真正的;}}使用ob娱乐下载\组件\序列化器\标准化者\ObjectNormalizer;美元标准化者=新ObjectNormalizer ();美元结果=美元标准化者- >正常化(新MyObject ());/ /结果美元= [“foo”= >“foo”,“酒吧”= >“酒吧”,“记者”= > true)
简化设置,这个新的标准化者,以及序列化组,默认启用FrameworkBundle。
能力改变属性名
的GetSetMethodNormalizer
提供了一个基本的机制调整转换属性名的getter / setter方法名称:
1 2 3 4 5
/ /……美元标准化者=新GetSetMethodNormalizer ();美元标准化者- >setCamelizedAttributes (数组(“first_name”));美元序列化器=新序列化器(数组(美元标准化者),数组(美元编码器));
这个代码允许first_name
房地产是正确地转换为getFirstName ()
方法,而不是错误的getFirst_name ()
方法。
在2.7setCamelizedAttributes ()
新方法被弃用的NameConverter
通用的转换器。第一个可用的名字转换器驼峰式大小写变成蛇案例和其它的方法:
1 2 3 4 5 6 7
使用ob娱乐下载\组件\序列化器\NameConverter\CamelCaseToSnakeCaseNameConverter;使用ob娱乐下载\组件\序列化器\标准化者\GetSetMethodNormalizer;/ /……美元nameConverter=新CamelCaseToSnakeCaseNameConverter (数组(“first_name”));美元标准化者=新GetSetMethodNormalizer (零,美元nameConverter);美元序列化器=新序列化器(数组(美元标准化者),数组(美元编码器));
到一个现有的对象进行反序列化
通常当你创建新的对象信息进行反序列化。然而,在Symfony ob娱乐下载2.7可以反序列化到一个现有的对象。这可以有用例如更新通过教义ORM对象检索:
1 2 3 4 5 6 7 8 9 10
美元existingProduct=美元这- >getDoctrine ()- >…美元产品=美元这- >标准化者- >denormalize (数组(“酒吧”= >“酒吧”),“实体AppBundle \ \ \ \产品”,零,数组(“object_to_populate”= >美元existingProduct));/ /产品和existingProduct美元是对同一个对象的引用
DunglasJsonLdApiBundle
为了更好地展示序列化器组件的新特性,凯文已经开发了一个新包DunglasJsonLdApiBundle。这个包允许创建超媒体api JSON-LD和九头蛇的序列化器组件的支持。
评论
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。