Как проверить, наследует ли класс другой класс, не создавая его?

У меня есть имя класса. Как проверить, наследует ли класс другой класс, не создавая его?

if (!class_exists($controller)) //AND I have check type { $objectController = new IndexController(); $objectController->index(); } 

    Вы должны будете использовать отражение для этого, это довольно большая тема:

    http://ca.php.net/manual/fr/book.reflection.php

    Посмотрите на документ немного, попробуйте что-нибудь, и если у вас все еще есть вопросы, что-то более точное, тогда задайте другой вопрос по этой теме.

    Супер старый вопрос, но опять же он хорошо работает.

    Вы можете использовать is_subclass_of :

    http://php.net/manual/en/function.is-subclass-of.php

     class TestA {} class TestB extends TestA {} class TestC extends TestB {} var_dump(is_subclass_of('TestA', 'TestA')); // false var_dump(is_subclass_of('TestB', 'TestA')); // true var_dump(is_subclass_of('TestC', 'TestA')); // true 

    Я знаю, что это старый вопрос, хотя сейчас он высоко оценивает Google и привел меня сюда, ища альтернативу размышлениям. После того, как я ничего не нашел, я решил опубликовать рабочий пример для всех здесь.

    Вы можете сделать это, используя отражение. Старайтесь не слишком полагаться на размышления, так как это может быть ресурсоемким.

     class TestA {} class TestB extends TestA {} class TestC extends TestA {} $reflector = new ReflectionClass('TestA'); $result = $reflector->isSubclassOf('TestA'); var_dump($result); // false $reflector = new ReflectionClass('TestB'); $result = $reflector->isSubclassOf('TestA'); var_dump($result); // true $reflector = new ReflectionClass('TestC'); $result = $reflector->isSubclassOf('TestA'); var_dump($result); // false 

    Для получения дополнительной информации о отражении класса см. http://www.php.net/manual/en/class.reflectionclass.php

    Для получения дополнительной информации об отражении в целом см. http://php.net/reflection