Req #52657 [Asn->Opn]: Object id function where its uniqueness persists through entire script execution

From: Date: Tue, 24 Oct 2017 06:17:10 +0000
Subject: Req #52657 [Asn->Opn]: Object id function where its uniqueness persists through entire script execution
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-211995@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=52657&edit=1 ID: 52657 Updated by: kalle@php.net Reported by: marco dot weber at uni-trier dot de Summary: Object id function where its uniqueness persists through entire script execution -Status: Assigned +Status: Open Type: Feature/Change Request Package: SPL related Operating System: ANY PHP Version: PHP >= 5.2.0 -Assigned To: rmf +Assigned To: Block user comment: N Private report: N Previous Comments: ------------------------------------------------------------------------ [2015-04-19 15:55:35] rmf@php.net As noted in the original title, a name of spl_object_id was suggested. I would like to propose something more suggestive of the intent: spl_object_uuid. While I went ahead and assigned this to myself because I would like to find a solution for my own needs, this is not high priority, and I am not a regular PHP contributor, so the following two things must fall into line for this to become a reality: 1. I can manage the time to investigate and implement an elegant and proper solution. 2. My patch is accepted. I can absolutely guarantee this will not be in PHP 7. Based on my current schedule it'll likely be a few minor releases after. If anyone else have more ample time and wants to tackle this, feel free to snatch it away and assign it to yourself ;-). ------------------------------------------------------------------------ [2014-10-08 12:47:30] adrien dot crivelli at gmail dot com The workaround suggested by "maciej dot sz at gmail dot com" does not work, as it has the exact same pitfall as the existing spl_object_hash() function. I am in favor of modifying existing spl_object_hash(). Even if it is to return an int, instead of string. I am pretty sure anybody using the function would actually be happier if we could guarantee uniqueness for the entire PHP process lifetime. ------------------------------------------------------------------------ [2013-09-19 22:41:38] metamarkers at gmail dot com Here's a chopped down version of my current solution. function id ( $object ) { static $id = 0; if (!isset($object->__id) || $object->__id[0] !== spl_object_hash($object)) { $object->__id = [spl_object_hash($object),++$id]; } return $object->__id[1]; } It works for clones to a degree. Clones can be made through this function to automatically refresh the id. function dupe ( $object ) { $clone = clone $object; id($clone); return $clone; } ------------------------------------------------------------------------ [2013-09-19 22:29:56] metamarkers at gmail dot com Could be made into a magic property ->__id The id could just be a signed 64-bit counter that ticks up every time an object is created. What would happen when you create more than 9,223,372,036,854,775,807 objects? Refactor, probably. ------------------------------------------------------------------------ [2013-02-14 12:42:59] maciej dot sz at gmail dot com An implementation of this is avaliable, and can be compiled as an extension: http://stackoverflow.com/a/3089587/1697320 ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=52657 -- Edit this bug report at https://bugs.php.net/bug.php?id=52657&edit=1

« previous php.bugs (#211995) next »