序列化器组件

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.0,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

序列化器组件

序列化器组件是用来把对象变成一个特定格式(XML、JSON、Yaml…)和其它的方法。

为了这样做,序列化器组件遵循以下简单的模式。

正如你所看到的在上面的图片中,一个数组作为男人在中间。这样,编码器将只处理特定的格式数组反之亦然。同样,标准化者将处理特定的对象数组反之亦然。

序列化是一个复杂的话题,虽然这个组件可能不工作在所有情况下,它可以是一个有用的工具在开发工具来进行序列化和反序列化对象。

安装

你可以在许多不同的方式:安装组件

使用

使用序列化器组件是很简单的。你只需要设置序列化器指定编码器和标准化者可用:

1 2 3 4 5 6 7 8 9
使用欧宝娱乐app下载地址\组件\序列化器\序列化器;使用欧宝娱乐app下载地址\组件\序列化器\编码器\XmlEncoder;使用欧宝娱乐app下载地址\组件\序列化器\编码器\JsonEncoder;使用欧宝娱乐app下载地址\组件\序列化器\标准化者\GetSetMethodNormalizer;美元编码器=数组(“xml”= >XmlEncoder (),json的= >JsonEncoder ());美元标准化者=数组(GetSetMethodNormalizer ());美元序列化器=序列化器(美元标准化者,美元编码器);

序列化一个对象

为了这个例子中,假定下面的类已经存在于您的项目:

1 2 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
名称空间Acme;{私人美元年龄;私人美元的名字;/ /读取器公共函数getName(){返回美元- >名称;}公共函数getAge(){返回美元- >年龄;}/ / setter公共函数setName(美元的名字){美元- >name =美元的名字;}公共函数setAge(美元年龄){美元- >年龄=美元年龄;}}

现在,如果你想要将这个对象序列化为JSON,您只需要使用序列化器服务之前创建:

1 2 3 4 5 6 7 8 9
美元=Acme \人();美元- >setName (“foo”);美元- >setAge (99年);美元jsonContent=美元序列化器- >序列化(美元,json的);/ / $ jsonContent包含{“名称”:“foo”,“年龄”:99}回声美元jsonContent;/ /或返回一个响应

的第一个参数serialize ()是对象进行序列化和第二个用于选择合适的编码器,在这种情况下吗JsonEncoder

反序列化一个对象

现在让我们看看如何做的恰恰相反。这一次,“人”类的信息将以XML格式编码:

1 2 3 4 5 6 7 8
美元数据=< < < EOF foo <人> <名称> < /名称> <时代> 99 < /年龄> < /人> EOF;美元=美元序列化器- >反序列化(美元数据,“Acme \人”,“xml”);

在这种情况下,反序列化()需要三个参数:

  1. 是解码的信息
  2. 这类的名称将解码的信息
  3. 使用的编码器将这些信息转化为一个数组

JMSSerializer

一个流行的第三方库,JMS序列化器,提供了一个更复杂的但更复杂的解决方案。这个库包含配置的能力应该如何序列化/反序列化对象通过注释(YML, XML和PHP),与教义ORM的集成,以及其他处理复杂的情况下(如循环引用)。

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