Edit report at http://bugs.php.net/bug.php?id=52300&edit=1
ID: 52300 Comment by: olamedia at gmail dot com Reported by: olamedia at gmail dot com Summary: spl_get_object_by_hash() Status: Open Type: Feature/Change Request Package: SPL related PHP Version: 5.3.3RC2 New Comment: Of course, the real problem is in garbage collector, which can't handle crossreferences. This function is quicker to-do alternative. Previous Comments: ------------------------------------------------------------------------ [2010-07-11 12:26:17] cataphr...@php.net If you want weak references, this seems like a poor substitute. Who would want to store a reference that may yield another object in the future? ------------------------------------------------------------------------ [2010-07-09 07:41:21] olamedia at gmail dot com Description: ------------ class a{} $object = new a(); $object2 = spl_get_object_by_hash(spl_object_hash($object)); var_dump($object === $object2); // true (same object) NOTE: When using spl_get_object_by_hash, you must know that $object must be alive else function can return another object. Primary usage example in test script: Test script: --------------- class a{ protected $_b; public function getB(){ return spl_get_object_by_hash($this->_b); } public function doSomething(){ $b = $this->getB(); // here I can use $b ! } public function __construct($b){ $this->_b = spl_object_hash($b); } } class b{ protected $_a; public function getA(){ return $this->_a; } public function __construct(){ $this->_a = new a($this); } public function __destruct(){ echo 'destroyed'; } } $b = new b(); $b->getA()->doSomething(); unset($b); // destroyed !! this IS NOT POSSIBLE without spl_get_object_by_hash() ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=52300&edit=1