对于我当前的项目,我必须解析数据“转储”(来自微控制器的EEPROM HEX转储)(来自文件或SQL数据库),这些数据具有不同的格式,具体取决于控制器中软件的版本。 (软件版本也在转储中。)
提取版本有效,我有一个适用于1个特定版本的工作版本(但我发现当前版本非常混乱)。由于不同版本之间存在一些重叠。
代码的输出是一个JSON数组,它被提供给angular,它将数据格式化为表格,以便用户可以开始播放数据。 (JSON是使用json_encode
生成的,效果很好)
我正在寻找的是一个很好的(oop,如果可能的话)解决方案,它可以从不同的文件版本中提取数据,而无需大量的代码复制粘贴。我现在能想到的唯一解决方案是第一版的类,而不是复制粘贴(和一点点编辑)到第二版的新类(依此类推)。
关于如何做到这一点的一般答案对我来说很好,但是我想在PHP中这样做。
答案 0 :(得分:0)
首先为第一个版本创建基类和子类(以下代码可能没有完美的语法):
class DataDump {
// some kind of storage
protected $contents;
}
class FirstVersion extends DataDump {
}
然后,当您构建FirstVersion
类时,请尝试密切关注您认为在所有版本中可能会出现的内容,并将该代码移至DataDump父类。
class DataDump {
// some kind of storage
protected $contents;
public loadFile($filename) {
....code....
$this->contents = ...
}
public processHeader() {
}
}
class FirstVersion extends DataDump {
public loadFirstFile {
$this->loadFile(...);
$this->processHeader();
...some code specific to this version...
}
}
然后,您可以使用常见的东西慢慢构建父类,并且几乎总是代码的一部分是常见的(即使是在小段中)。在构建其他子类时,您可能会发现可以共享的其他逻辑,因此将其推送到父级,或者可能存在一些子类覆盖的基本方法,而其他子类只能使用基本方法。
有时候,当你遇到很大的麻烦时,很难看到所有共享代码的前期以及如何以理智的方式最好地组织它,这个过程在你遇到困难时会有很大的帮助。刚开始写作,您将开始在所有版本中看到模式,即使只是辅助方法。