如何在PHP中找到对象ID?
我使用的是 PHP 5.2。我想找到一种方法为每个对象输出唯一的id,因此在查看日志时很容易看到哪些对象是相同的。
在 Ruby 中,我只想说object.object_id获取 Ruby 对象的内部标识符。在PHP中似乎没有明显的方法来做到这一点。
有没有一种内置的方法可以做到这一点?如果没有,您能提供任何其他建议吗?
我使用的是 PHP 5.2。我想找到一种方法为每个对象输出唯一的id,因此在查看日志时很容易看到哪些对象是相同的。
在 Ruby 中,我只想说object.object_id获取 Ruby 对象的内部标识符。在PHP中似乎没有明显的方法来做到这一点。
有没有一种内置的方法可以做到这一点?如果没有,您能提供任何其他建议吗?
目前无法在 PHP 中执行此操作,从版本 5.3.6 开始。
spl_object_hash() 不会执行您想要的操作 - 因为它会在对象被删除时回收标识符,这将导致(例如)对象关系映射器尝试跟踪会话中的对象时出错。
文档页面顶部的说明(“此函数返回对象的唯一标识符。此 ID 可用作存储对象或标识对象的哈希键。是错误的 - 真相在该页面上的注释中揭示:“当一个对象被破坏时,其哈希值可能会被重新用于其他对象”,换句话说,该函数并不总是返回唯一标识符,并且不能总是用于存储或识别对象。
本注释中演示的技术在某些情况下可能有效,但它不可靠,也不会始终如一地工作,因为尝试访问未定义的属性将调用__get()和__set()魔术方法,其结果是不可预测的。
总之,你的问题的简短答案(不幸的是)是“不” - PHP中没有这样的方法,并且没有办法编写这样一个方法,它可以一致地适用于任何对象。
如果您希望将此功能添加到 PHP 中,请在此处投票和/或评论: