Req #52657 [Asn->Opn]: Object id function where its uniqueness persists through entire script execution
| From: | kalle@php.net | 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