如何在PHP中使用反射类获得扩展接口
我有一个实现接口的类,该接口扩展了另一个接口。设置如下:如何在PHP中使用反射类获得扩展接口,php,reflection,php-5.3,Php,Reflection,Php 5.3,我有一个实现接口的类,该接口扩展了另一个接口。设置如下: interface A{ } interface B extends A { } class C implements B { } $obj = new C(); 我想知道$obj对象实现了哪些接口。我尝试创建ReflectionClass对象,然后调用getInterfaces方法,但它只返回接口B: $reflection = new ReflectionClass($obj); print_r($reflection-&g
interface A{
}
interface B extends A {
}
class C implements B {
}
$obj = new C();
我想知道$obj对象实现了哪些接口。我尝试创建ReflectionClass对象,然后调用getInterfaces方法,但它只返回接口B:
$reflection = new ReflectionClass($obj);
print_r($reflection->getInterfaces());
我还尝试使用接口名创建ReflectionClass对象,但是当我调用getInterfaces()方法时,它返回一个空数组
你们中有人知道如何获得扩展给定接口的接口名吗
非常感谢你的帮助,
史蒂夫你不需要对此进行反思。你可以简单地使用
- -返回由给定类实现的接口
array(2) {
["B"]=>
string(1) "B"
["A"]=>
string(1) "A"
}
输出:
如上所示-PHP5.2.17。戈登是对的。这不需要反射。我使用PHP版本5.3.6,结果如上所示。无论如何,我会做更多的测试。@Steve 5.2.14、5.3.3、5.3.6和5.4RC5不能复制,应该会给你你想要的。演示:
Array
(
[B] => ReflectionClass Object
(
[name] => B
)
[A] => ReflectionClass Object
(
[name] => A
)
)
var_dump(class_implements($obj));
array(2) {
["B"]=>
string(1) "B"
["A"]=>
string(1) "A"
}