Intereting Posts
Как получить последнее уменьшенное изображение для каждой категории в виде миниатюры категории PHP – найти следующую будущую повторяющуюся дату? Предупреждение: ldap_mod_replace (): Изменить: сервер не желает выполнять Как найти ширину изображения с помощью PHP? Пользовательский диспетчер Zend AMF Запрос Ajax WordPress возвращает 0 PHP PDO: выборка данных как объектов – свойств, назначенных ПЕРЕД вызовом __construct. Это верно? Неизвестная функция в PHP Netbeans – как подавить? Обрезать несколько разрывов строк и несколько пробелов от строки? Установите сеанс / файл cookie на 24 часа, чтобы показывать что-то только один раз в день пользователям E_NOTICE? == E_DEBUG, избегая isset () и @ с более сложным error_handler Ошибка HTTP-запроса в неверном запросе PHP Публикация данных с android на PHP Zend Framework формы, декораторы и проверки: должен ли я вернуться к простому HTML? Что означает / #! / В URL?

Получить все расширенные классы в PHP

Скажем, у меня есть класс вроде:

<? class ObjectModel { } 

и у меня есть другие классы:

 <? class SomeNewClass extends ObjectModel { } class SomeOtherNewClass extends ObjectModel { } 

Есть ли способ получить детей (SomeNewClass & SomeOtherNewClass) на основе класса ObjectModel?

 class ObjectModel { } class SomeNewClass extends ObjectModel { } class SomeOtherNewClass extends ObjectModel { } class SomeOtherNewClassLol extends ObjectModel { } function get_extends_number($base){ $rt=0; foreach(get_declared_classes() as $class) if(is_subclass_of($class,$base)) $rt++; return $rt; } echo get_extends_number('ObjectModel'); //output: 3 

Да, вы можете это сделать, DEMO

Вы можете повторять все классы, возвращаемые get_declared_classes() и проверять их Reflection ( Reflection::isSubclassOf )

Но – это не сработает, если вы используете автозагрузку.

Не уверен, что это произойдет, но вы можете взломать свой путь:

  1. get_declared_classes
  2. get_parent_class для каждого класса на 1

Это не очень, но если дочерние классы загружены, это возможно.