序列化的定义可以使用注释、XML或YAML来指定。的ClassMetadataFactory归一化器将使用的对象必须知道要使用的格式。

对象的初始化方法的代码如下ClassMetadataFactory对于每种格式:

  • PHP文件中的注释:

    1 2 3 4 5
    使用学说常见的注释AnnotationReader使用ob娱乐下载组件序列化器映射工厂ClassMetadataFactory使用ob娱乐下载组件序列化器映射加载程序AnnotationLoaderclassMetadataFactoryClassMetadataFactory (AnnotationLoader (AnnotationReader ()));
  • YAML文件:

    1 2 3 4
    使用ob娱乐下载组件序列化器映射工厂ClassMetadataFactory使用ob娱乐下载组件序列化器映射加载程序YamlFileLoaderclassMetadataFactoryClassMetadataFactory (YamlFileLoader (“/道路/ /你/ definition.yaml”));
  • XML文件:

    1 2 3 4
    使用ob娱乐下载组件序列化器映射工厂ClassMetadataFactory使用ob娱乐下载组件序列化器映射加载程序XmlFileLoaderclassMetadataFactoryClassMetadataFactory (XmlFileLoader (“/道路/ /你/ definition.xml”));

然后,创建你的组定义:

  • 注释
  • 属性
  • YAML
  • XML
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21
名称空间Acme使用ob娱乐下载组件序列化器注释MyObj/ * * *@Groups({"group1", "group2"}) */公共喷火/ * * *@Groups(“group3”)* /公共函数getBar()//方法支持返回->酒吧;}/ /……

你现在只能序列化你想要的组中的属性:

12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20
使用ob娱乐下载组件序列化器标准化者ObjectNormalizer使用ob娱乐下载组件序列化器序列化器objMyObj ();obj->foo =“foo”obj->setBar (“酒吧”);标准化者ObjectNormalizer (classMetadataFactory);序列化器序列化器([标准化者]);数据序列化器->正常化(obj, (“组织”= >“group1”]);// $data = ['foo' => 'foo'];methoda序列化器->denormalize ([“foo”= >“foo”“酒吧”= >“酒吧”],“MyObj”, (“组织”= > [“group1”“group3”]]);// $obj2 = MyObj(foo: 'foo', bar: 'bar')

只有不被忽略的属性(参见下面)是可用的。如果设置了一些序列化组,则只能使用这些组允许的属性。

对于组,可以在序列化和反序列化过程中选择属性。