序列化的定义可以使用注释、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
名称空间Acme使用ob娱乐下载组件序列化器注释MyObj#(组([' group1 ', ' group2 ']))公共喷火#(团体([' group4 ']))公共anotherProperty#(团体([' group3 ']))公共函数getBar()//方法支持返回->酒吧;}/ /……

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

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 27 28 29 30
使用ob娱乐下载组件序列化器标准化者ObjectNormalizer使用ob娱乐下载组件序列化器序列化器objMyObj ();obj->foo =“foo”obj->anotherProperty =“anotherProperty”obj->setBar (“酒吧”);标准化者ObjectNormalizer (classMetadataFactory);序列化器序列化器([标准化者]);数据序列化器->正常化(obj, (“组织”= >“group1”]);// $data = ['foo' => 'foo'];methoda序列化器->denormalize ([“foo”= >“foo”“anotherProperty”= >“anotherProperty”“酒吧”= >“酒吧”),“MyObj”, (“组织”= > [“group1”“group3”]]);// $obj2 = MyObj(foo: 'foo', bar: 'bar')//在' groups '中使用特殊值' * 'obj3序列化器->denormalize ([“foo”= >“foo”“anotherProperty”= >“anotherProperty”“酒吧”= >“酒吧”),“MyObj”, (“组织”= > [‘*’]]);// $obj2 = MyObj(foo: 'foo', anotherProperty: 'anotherProperty', bar: 'bar')

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

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