【发布时间】:2013-04-25 13:01:31
【问题描述】:
是否有一些 php 库可以将数据序列化为 XML 格式,例如 serialize() 和 unserialize()(从 XML 恢复对象)具有 private 和 protected 字段的对象的函数?
PEAR XML_Serializer 可以与 type hints 选项一起正常工作,但它不处理受保护的字段。
【问题讨论】:
-
如果 PEAR XML_Serializer 工作正常,使用 PHP 5.3 的反射添加对受保护字段的支持是否很容易?我可以想象在编写类时这是不可能的,所以可能添加一个标志并扩展字段的序列化/反序列化方法可以做到这一点。它现在在 github 上可用,因此可能很容易修补和跟踪上游更改:github.com/pear/XML_Serializer
-
@hakre 非常感谢,只需 6 行代码就可以为我们的项目需求修补 XML_Serializer/XML_Unserializer 类!
-
我建议你也把fork放到github上。所以梨的人可以看到这一点。我会说可能非常有用。受保护的成员在序列化中是有意义的(但这可能是一个极端情况,可能是一种气味)。不过分享还是不错的。
-
@hakre 我认为这个提交会很臭,因为在 XML_Unserializer 中,我们的代码填充对象的私有和受保护字段,假设每个字段都有适当的设置器(例如,
private $_id;有应该是 setterpublic setId($id);设置$_id而对其他私有变量没有任何影响)。 -
当然可以,但无论如何我会说值得分享。这可以变成一个标志并有条件地启用。或者根据需要只更新 fork。
标签: php xml serialization pear