How to find Object ID in PHP?
There is currently no way to do this in PHP, as of version 5.3.6.
spl_object_hash() does not do what you want - because it recycles the identifiers when objects get deleted, this will lead to errors in (for example) an object-relational mapper trying to keep track of objects in a session.
The description at the top of the documentation page ("This function returns a unique identifier for the object. This id can be used as a hash key for storing objects or for identifying an object.") is wrong - the truth is revealed in the note on that page: "When an object is destroyed, its hash may be reused for other objects", or in other words, the function does not always return a unique identifier, and can not always be used for storing or identifying objects.
The technique demonstrated in this comment may work in some cases, but it not reliable and will not work consistently either, since attempting to access an undefined property will invoke the __get() and __set() magic methods, the results of which are unpredictable.
In conclusion, the short answer to your question (unfortunately) is "no" - there is no such method in PHP, and there is no way to write a method like this that will work consistently for any object.
If you would like to see this feature added to PHP, please vote and/or comment here:
http://bugs.php.net/bug.php?id=52657
Use spl_object_hash()
for that.
It returns an unique identifier for each object instance, and not the name of the class, so it seems more suitable for you.
Edit:
For PHP < 5.2.x users, see this answer.
⚠️ PHP 7.2.0 introduces spl_object_id()!
$test = (object)[];
var_dump(spl_object_id($test)); # int(1)
Caveat emptor(?):
When an object is destroyed, its id may be reused for other objects.