Edit report at https://bugs.php.net/bug.php?id=61953&edit=1

 ID:                 61953
 Updated by:         [email protected]
 Reported by:        dev at pp3345 dot de
 Summary:            A function for getting class instances
-Status:             Open
+Status:             Not a bug
 Type:               Feature/Change Request
 Package:            Class/Object related
 PHP Version:        5.4.2
 Block user comment: N
 Private report:     N

 New Comment:

This information is not easily available from the engine and tracking it would 
be quite expensive. If you need it, you can do it using something like this: 
(untested)

$tracked_objects = array(); // Global

class TrackedClass {
    public function __construct() {
       $GLOBAL['tracked_objects'][spl_object_hash($this)] = array(
           'class' => get_class($this),
           'stack' => debug_backtrace()
       );
    }
    public function __destruct() {
       unset($GLOBAL['tracked_objects'][spl_object_hash($this)]);
    }
}

Any class you want to track can than be extended from such a class (or use 5.4 
and traits) andyou can inspect $tracked_objects.


Previous Comments:
------------------------------------------------------------------------
[2012-05-05 18:36:05] dev at pp3345 dot de

Description:
------------
I'd like to have a function that returns all instances of a given class with 
information about where it was instantiated and referenced. This could really 
help in debugging. A possible implementation could be

get_instances(string $class_name);

or

ReflectionClass::getInstances(string $class_name);



------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=61953&edit=1

Reply via email to