如何测试一个类是否按名称扩展另一个类?
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
}
答案 0 :(得分:1)
我认为class_parents函数是最简单的解决方案,但应该注意的是,这仅适用于PHP 5.1及更高版本。
例如,如果您想查看'B'是否扩展'A',您可以使用:
if(in_array('A', class_parents('B'))) {
// B extends A.
}
顺便提一下,应该注意的是,根据文档,您可以向class_parents
函数提供对象(类实例)或字符串(类名),这可能会有用。
答案 1 :(得分:1)
我认为
get_parent_class()
是您正在寻找的。这将返回父类的名称。
答案 2 :(得分:1)
根据您的要求,您可能还需要instanceof
运算符。
$a instanceof A
是类$a
的实例,或任何扩展A
的类(包括它是{{1}的实例),则 A
将为true扩展C
扩展B
)或A
(如果使用接口)。见http://php.net/instanceof