我有一堆对象需要能够在JSON,PHP等等中进行序列化。我有像JSONSerializer这样的东西,显然有serialize()可用。现在我仍然需要对象特定的逻辑来将对象转换为可以提供给JSONSerializer或serialize()的东西。基本上是基本类型或仅包含与此条件匹配的元素的数组。
两个问题:
如何在序列化之前调用此步骤? “arrayification”?我正在考虑给我的对象一个toArray()方法。我还希望他们实现一些指定此方法的接口?任何人都有一个更好的主意,然后“阵列”?
如何才能最好地解决反序列化问题?我可以在每个对象中使用静态newFromArray方法。虽然不喜欢静态代码。有关工厂的任何意见,可以从“阵列化”构建给定类型的对象吗?
注意:这需要与PHP 5.3一起使用。
答案 0 :(得分:0)
Symfony Serializer Component为这两个问题提供了一个答案。它调用从对象到数组“规范化”的步骤和反向的“非规范化”。
为了构建“反序列化器”或“非规范化器”,我发现创建一个非常有用的抽象工厂。它解决了构造问题,并且可以使用户甚至不知道他们正在使用哪个确切的解串器。一个例子是this deserializer factory,它基于Serialization component。