如何在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"
}