1

假设我正在从数据库中加载大量对象。这些是普通的、普通的 PHP 对象,没有从任何花哨的东西继承。假设我可能会更改其中一些对象并希望将它们写回数据库,但只使用在 UPDATE ... SET ... 查询中实际不同的字段。还假设我事先不知道要更改哪些对象。

我在想我需要复制所有加载的对象,并保留以供参考和比较,如果我需要将对象写回数据库。

我看到两种可能的方法:

  • 我可以克隆所有加载的对象并存储在单独的列表中。保存时,使用索引在列表中查找对象,然后比较值。
  • 或者,我可以简单地将加载到字符串中的所有内容序列化,然后保留。保存时,在字符串中找到序列化的对象(以某种方式),将其反序列化,比较值,然后就可以了。

在效率方面(主要是内存,但速度也是一个考虑因素),哪个是有利的?

4

1 回答 1

1

那么你实际上需要一些东西来比较对象的状态是否发生了变化。如果您不仅要跟踪哪个对象已更改,还要跟踪哪个成员,您需要为每个成员设置一个状态。

由于您不想扩展原始对象(例如,它们可能具有在更改时无效的标志),因此您需要从外部跟踪状态。我会说序列化可能是最好的选择。克隆将占用更多内存。

于 2012-04-04T13:17:45.330 回答