如何注册/聚集父母和孩子班?

时间:2019-07-05 06:41:54

标签: php wordpress oop

我正在寻找一种从WordPress中的父类自动挂钩子类的好方法。

我正在创建一个带有一些不同模板的插件,我想将所有子模板类收集到一个数组中,以便我可以列出它们。

class template {
    // Methods
}

class name1 extends template {
    // Methods
}

class name2 extends template {
    // Methods
}

class name3 extends template {
    // Methods
}

1 个答案:

答案 0 :(得分:0)

您可以使用get_declared_classes()link to docs)。

然后迭代结果,查看返回的哪个类是您的template类的子代。

例如:

//鉴于这些类别

class father {}
class child1 extends father {}
class child2 extends father {}
class child3 extends father {}
class notMe {}

//您可能具有这样的实用功能

function getChildrenOf(string $parentClass): array {

    if (!class_exists($parentClass)) {
       return [];
    }

    $classes = array_filter(get_declared_classes(), function($class) use($parentClass) {

        return is_a($class, $parentClass, true);
    });

    return $classes;
}

//您可以这样使用

$childrenClasses = getChildrenOf(father::class);

var_dump($childrenClasses);

您可以看到它们都here协同工作。

相关问题