PHP: определить, является ли класс расширением другого класса - PullRequest
0 голосов
/ 20 мая 2011

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

class A { ... }
class B extends A { ... }
class C { ... }

$class_name = 'B';
if (class_extends_another($class_name, 'A')) {
   // Yep
}

$class_name = 'C';
if (class_extends_another($class_name, 'A')) {
   // Nope
}

Ответы [ 3 ]

1 голос
/ 20 мая 2011

Я думаю

get_parent_class()

это то, что вы ищете. Который вернет имя родительского класса.

http://www.php.net/manual/en/function.get-parent-class.php

1 голос
/ 20 мая 2011

В зависимости от того, что вы ищете, вам также может потребоваться оператор instanceof.

$a instanceof A будет истинным, если $a является экземпляром класса A или любого класса, который расширяет A (включая, если это экземпляр C, который расширяет B, который расширяет A) или какой implements A (если вы используете интерфейсы). Смотри http://php.net/instanceof

1 голос
/ 20 мая 2011

Я думал, что функция class_parents будет самым простым решением, хотя следует отметить, что она доступна только в PHP 5.1 и выше.

Например, если вы хотите увидеть, расширило ли «B» значение «A», вы можете использовать:

if(in_array('A', class_parents('B'))) {
    // B extends A.
}

Кстати, следует отметить, что в соответствии с документами вы можете предоставить либо объект (экземпляр класса), либо строку (имя класса) для функции class_parents, что может оказаться полезным.

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