2011-05-20 145 views
0

如何测试以查看某个类是否按名称扩展了另一个类?PHP:确定类是否是另一个类的扩展

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 
} 

回答

1

我有想到,class_parents功能将是最简单的解决方案,但应该指出的是,这仅仅是在PHP 5.1及更高版本。

例如,如果你想看看是否“B”扩展“A”,可以使用:

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

顺便提及,应当指出的是,按照该文档可以提供任一物体(类实例)或一个字符串(类名)到class_parents函数,这可能是有用的。

1

取决于你在找什么你可能也想了instanceof操作。如果$aA类的一个实例,或延伸A任何类(包括如果它是延伸B延伸AC一个实例)或

$a instanceof A将为真其中implements A(如果使用的是接口)。请参阅http://php.net/instanceof

+0

在我的场景中,两个操作数都是类名,而不是实例。无论如何,谢谢。 – 2011-05-20 16:36:35

相关问题