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

Reply via email to