Как зарегистрировать / собрать родительские и дочерние классы? - PullRequest
1 голос
/ 05 июля 2019

Я ищу хороший способ автоматической перехвата дочерних классов из родительского класса в WordPress.

Я создаю плагин с несколькими различными шаблонами, и я хотел бы собрать все дочерние классы шаблонов в массив, чтобы я мог их перечислить.

class template {
    // Methods
}

class name1 extends template {
    // Methods
}

class name2 extends template {
    // Methods
}

class name3 extends template {
    // Methods
}

1 Ответ

0 голосов
/ 05 июля 2019

Вы можете использовать get_declared_classes() ( ссылка на документы ).

Затем выполнить итерацию результата и посмотреть, какой из возвращенных классов является потомком вашего 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);

Вы можете видеть, как все это работает вместе здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...