在PHP中比较两个对象的最快方法是什么?

joh*_*ack 11 php object

假设我有一个对象 - 在这种情况下是一个User对象 - 我希望能够跟踪一个单独的类的更改.User对象不应该以任何方式改变它的行为.

因此,我的单独类创建它的"干净"副本,将其存储在本地某个位置,然后稍后可以将User对象与原始版本进行比较,以查看在其生命周期内是否有任何更改.

是否有函数,模式或任何可以快速比较User对象的两个版本的东西?

选项1 也许我可以序列化每个版本,并直接比较,或哈希并比较?

选项2 也许我应该简单地创建一个ReflectionClass,运行该类的每个属性,看看这两个版本是否具有相同的属性值?

选项3 也许有一个简单的原生函数objects_are_equal($object1,$object2);

最快的方法是什么?

Fra*_*nes 13

访问对象的所有(公共,受保护和私有)属性而不修改它的唯一方法是通过反射.如果您愿意,可以在修改对象之前克隆该对象,然后使用反射函数比较它们,以循环遍历两个对象之一的不同属性并比较值.这将有效地告诉您哪些属性已更改.

如果您只想知道对象是否已更改,则可以使用==或===运算符.看一下PHP文档的比较对象部分.

也就是说,当你改变它们时,跟踪你改变了什么并不容易?