我正在开发一个导入/导出程序,可以将CMS中的内容导出到XML结构中,然后也可以将其重新导入CMS以更新内容。
昨天我通过一些探索性编码想出了一个原型。功能就在那里,程序按预期工作。但功能基本上由3个方法组成(一个主要,一个递归导入,一个递归导出),每个方法跨越300行。代码由一些嵌套的foreach
和while
以及if
组成,并且尽可能程序化。
虽然它有效但我有点担心程序的最终版本看起来更加丑陋,因为特别是在导入方法中,为了将XML结构转换回数据库内容,需要许多特殊情况。
我想知道OOP如何在这里提供帮助。目前,我的方法是生成一个类似于DB行的结构树,这些结构被序列化为XML,并且在导入时,XML再次被序列化为基于数组的树结构。
创建一个对象树以封装行为会更好吗?实际上我发现使用数组结构非常方便,因为PHP在处理数组方面很强大,并且很容易序列化/反序列化它们。也许一个函数式编程风格的方法更适合在OOP中强制...添加一个可以从对象转换到对象的复杂的Serializer在我看来更加臃肿。
我知道对此没有绝对的答案,我会对你如何构建像我的脚本以处理导入/导出等特殊情况而不创建两个基本上可以完成所有事情的巨大方法感兴趣。
答案 0 :(得分:1)
问题是数组不会隐式支持元数据 - 而且你已经在类型上有所区别(在原子实体和聚合实体之间 - 虽然这是一个可以用数组描述的分离)。
最重要的是,您可以生成的代码质量取决于您的技能和经验 - 如果是我,我可能会选择OO方法来获得更清晰的代码 - 但如果您不熟悉OO编程然后你正在争夺2个方面 - 问题领域和编程方法。话虽如此,学习新的编程方法总是一个好主意 - 即使你再也没有编写OO代码,它也会改进你的程序编码。
如果您决定尝试一下,那么最简单的出发点是为每个XML标记定义一个对象,然后围绕该标记进行验证。
HTH
下进行。