Symfonyob娱乐下载 2.7新增功能:序列化组
2014年12月23日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony版本。ob娱乐下载有些信息可能已经过时了。阅读最新的Symfony文档ob娱乐下载.
的ob娱乐下载Symfony Serializer组件用于将PHP对象转换为特定的格式(XML, JSON, YAML,…),反之亦然。为了保持它的简单性,我们限制了该组件的作用域,这就是为什么它是自引入以来新特性较少的Symfony组件之一。ob娱乐下载
在Syob娱乐下载mfony 2.7中,我们决定扭转这一趋势,我们引入了一个序列化/反序列化不同对象属性集的新特性.考虑以下对象,其中包括针对管理员、附属机构和普通用户的属性:
1 2 3 4 5 6 7 8 9 10 11
类产品{//该属性对管理员独占公共$itemsSold;//该属性对管理员和附属机构可见公共$委员会;//该属性对所有人(管理员,附属机构,用户)可见公共$价格;}
序列化的定义可以使用注释、XML或YAML来指定。在使用注释的情况下,定义序列化组如下:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
使用ob娱乐下载\组件\序列化器\注释\组;类产品{/ * * *@Groups“管理员”({})* /公共$itemsSold;/ * * *@Groups({"admins", "affiliates"}) */公共$委员会;/ * * *@Groups({"admins", "affiliates", "users"}) */公共$价格;}
现在已经定义了序列化组,您只能序列化属于给定组的属性:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
使用ob娱乐下载\组件\序列化器\序列化器;使用ob娱乐下载\组件\序列化器\标准化者\GetSetMethodNormalizer;使用ob娱乐下载\组件\序列化器\映射\加载程序\AnnotationLoader;使用ob娱乐下载\组件\序列化器\映射\工厂\ClassMetadataFactory;使用学说\常见的\注释\AnnotationReader;$产品=新产品();$产品->itemsSold =20.;$产品->委员会=7.5;$产品->价格=19.99;$classMetadataFactory=新ClassMetadataFactory (新AnnotationLoader (新AnnotationReader ()));$标准化者=新PropertyNormalizer ($classMetadataFactory);$序列化器=新序列化器([$标准化者]);$数据=$序列化器->正常化($产品,零, (“组织”= > [“管理员”]]);/ / $ data = [' itemsSold ' = > 20,“委员会”= > 7.5,“价格”= > 19.99);$数据=$序列化器->正常化($产品,零, (“组织”= > [“子公司”]]);/ / $ data =[= > 7.5“佣金”,“价格”= > 19.99);$数据=$序列化器->正常化($产品,零, (“组织”= > [“用户”]]);// $data = ['price' => 19.99];$数据=$序列化器->正常化($产品,零, (“组织”= > [“子公司”,“用户”]]);/ / $ data =[= > 7.5“委员会”,“价格”= > 19.99);
类似地,你可以在反序列化内容时为user定义组:
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22
使用ob娱乐下载\组件\序列化器\序列化器;使用ob娱乐下载\组件\序列化器\标准化者\GetSetMethodNormalizer;使用ob娱乐下载\组件\序列化器\映射\加载程序\AnnotationLoader;使用ob娱乐下载\组件\序列化器\映射\工厂\ClassMetadataFactory;使用学说\常见的\注释\AnnotationReader;$产品=新产品();$产品->itemsSold =20.;$产品->委员会=7.5;$产品->价格=19.99;$classMetadataFactory=新ClassMetadataFactory (新AnnotationLoader (新AnnotationReader ()));$标准化者=新PropertyNormalizer ($classMetadataFactory);$序列化器=新序列化器(数组($标准化者));$产品=$序列化器->denormalize ([“itemsSold”= >20.,“价格”= >19.99,“委员会”= >7.5),“产品”,零, (“组织”= > [“子公司”,“用户”]]);// $product = product(价格:19.99,佣金:7.5)
发表在#生活在边缘
评论
Rémi布莱斯别名佐特尔
2014年12月23日在10:06
太棒了!
Youssef El Montaser
2014年12月23日在11:49
好消息!欧宝平台是合法的吗
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。
- price属性中缺少$(在两个类定义中)
在所有的代码片段中都没有$classMetadataFactory的实例化,而这是2.7的改动之一
/ / $ data =[= > 7.5“委员会”,“价格”= > 19.99);
(这在序列化的例子中。反序列化的例子是正确的)
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now