【问题标题】:Get all objects of a particular class获取特定类的所有对象
【发布时间】:2011-06-27 11:44:39
【问题描述】:

我必须通过引用列出作为类实例的对象

class Foo {}
class Foo1 {}
$obj1 = new Foo;
$obj2 = new Foo;
$obj32 = new Foo1;

我需要一个解决方案来获取所有 Foo 类实例的对象 你知道怎么做吗?

【问题讨论】:

  • 你是动态创建的吗?
  • 都是什么意思?在全局变量空间还是在局部变量空间中,甚至两者兼而有之?您使用哪些变量名?你能扩展这个类来记录实例吗?
  • Foo 的所有实例,你也指子类的所有实例吗?例如,如果有一个类 Foo2 extends Foo {},您是否也想要所有 Foo2 对象?
  • @GordonM:不,我只需要 Foo 的对象。 Foo2 扩展 Foo 并不重要
  • @hakre: 都在本地和全球范围内

标签: php oop class reflection


【解决方案1】:

获取类的所有实例的解决方案是在创建实例化类时保留它们的记录:

class Foo
{
  static $instances=array();
  public function __construct() {
    Foo::$instances[] = $this;
  }
}

现在可全局访问的数组Foo::$instances 将包含该类的所有实例。你的问题有点宽泛,所以我不能确切地说这是否是你要找的。如果没有,希望它有助于更​​清楚地了解您在寻找什么。

【讨论】:

  • 这不会阻止 GC 删除这个对象吗?
  • 不只是GC,这些对象甚至都没有被破坏,所以GC甚至不会启动。所以你需要清理自己(Foo::$instances = [];)。
【解决方案2】:

查看此答案Get all instances of a class in PHP 过去曾为我工作过。

【讨论】:

    猜你喜欢
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多