Il n'y a actuellement aucun moyen de faire cela en PHP, à partir de la version 5.3.6.
spl_object_hash() ne fait pas ce que vous voulez - parce qu'il recycle les identifiants lorsque les objets sont supprimés, cela conduira à des erreurs dans (par exemple) un mappeur objet-relationnel essayant de garder la trace des objets dans une session.
La description en haut de la page de documentation ("Cette fonction renvoie un identifiant unique pour l'objet. Cet identifiant peut être utilisé comme une clé de hachage pour le stockage des objets ou pour l'identification d'un objet.") est erronée - la vérité est révélée dans la note de cette page : "Lorsqu'un objet est détruit, son hash peut être réutilisé pour d'autres objets", ou en d'autres termes, la fonction ne fait pas pas renvoient toujours un identifiant unique, et peuvent pas toujours être utilisé pour stocker ou identifier des objets.
La technique démontrée dans ce commentaire peut fonctionner dans certains cas, mais elle n'est pas fiable et ne fonctionnera pas non plus de manière cohérente, puisque toute tentative d'accès à une propriété non définie invoquera les méthodes magiques __get() et __set(), dont les résultats sont imprévisibles.
En conclusion, la réponse courte à votre question (malheureusement) est "non" - il n'y a pas de méthode de ce type en PHP, et il n'y a aucun moyen d'écrire une méthode comme celle-ci qui fonctionnera de manière cohérente pour n'importe quel objet.
Si vous souhaitez que cette fonctionnalité soit ajoutée à PHP, veuillez voter et/ou commenter ici :
http://bugs.php.net/bug.php?id=52657