反序列化:命名和实现

时间:2013-02-13 12:22:20

标签: php serialization

我有一堆对象需要能够在JSON,PHP等等中进行序列化。我有像JSONSerializer这样的东西,显然有serialize()可用。现在我仍然需要对象特定的逻辑来将对象转换为可以提供给JSONSerializer或serialize()的东西。基本上是基本类型或仅包含与此条件匹配的元素的数组。

两个问题:

  1. 如何在序列化之前调用此步骤? “arrayification”?我正在考虑给我的对象一个toArray()方法。我还希望他们实现一些指定此方法的接口?任何人都有一个更好的主意,然后“阵列”?

  2. 如何才能最好地解决反序列化问题?我可以在每个对象中使用静态newFromArray方法。虽然不喜欢静态代码。有关工厂的任何意见,可以从“阵列化”构建给定类型的对象吗?

  3. 注意:这需要与PHP 5.3一起使用。

1 个答案:

答案 0 :(得分:0)

Symfony Serializer Component为这两个问题提供了一个答案。它调用从对象到数组“规范化”的步骤和反向的“非规范化”。

为了构建“反序列化器”或“非规范化器”,我发现创建一个非常有用的抽象工厂。它解决了构造问题,并且可以使用户甚至不知道他们正在使用哪个确切的解串器。一个例子是this deserializer factory,它基于Serialization component