【问题标题】:Return an array of children to a PHP class?将一组子元素返回给 PHP 类?
【发布时间】:2012-08-25 00:15:44
【问题描述】:

假设我有这样的课程:

class father {
    function __construct() {
        $msg = "Blah...\n";
        print $msg;
    }

    function doSomething() {
        $msg = get_class($this) . " does something...\n";
        print $msg;
    }
}

还有一个像这样的子类:

class child extends father {
    function __construct() {
        $this->doSomething()
    }
}

还有:

class eldest extends father {
    function __construct() {
        $this->doSomething()
    }
}

有没有办法返回父类的子类(在本例中为子类和最年长者)的当前实例的数组?

【问题讨论】:

  • 您的意思是是否有办法找出正在使用的子类?
  • 我相信这回答了你的问题:stackoverflow.com/questions/6671398/…
  • 不,返回父类所有子类的实例数组。这可能吗?
  • 不,这是不可能的,你不应该这样做。
  • @John 从技术上讲,您可以遍历 get_defined_vars() 并检查它们是否是给定类的子类 - 尽管我不知道它会有多大用处。

标签: php object


【解决方案1】:

如果您的意思是获取扩展 father 的每个类,您应该通过 Reflection 遍历所有声明的类:

$subclasses = array();

foreach(get_declared_classes() as $class)
{

    $reflection = new ReflectionClass($class);  
    $reflection -> isSubClassOf('father') && $subclasses[] = $class;

}

var_dump($subclasses);

并检查结果。

编辑:如果您需要了解 instances,请遍历 get_defined_vars() - 但您为什么需要知道这一点?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多