php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #61953 A function for getting class instances
Submitted: 2012-05-05 18:36 UTC Modified: 2012-05-08 23:48 UTC
From: dev at pp3345 dot de Assigned:
Status: Not a bug Package: Class/Object related
PHP Version: 5.4.2 OS:
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: dev at pp3345 dot de
New email:
PHP Version: OS:

 

 [2012-05-05 18:36 UTC] 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);


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2012-05-08 23:48 UTC] johannes@php.net
-Status: Open +Status: Not a bug
 [2012-05-08 23:48 UTC] johannes@php.net
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.
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Fri May 09 09:01:26 2025 UTC