如何在PHP中使用反射类获得扩展接口



我有一个实现接口的类,该接口扩展了另一个接口。设置如下:

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对象,但当我调用getInterface()方法时,它返回一个空数组。

你们中有人知道如何获得一个扩展给定接口的接口名称吗?

非常感谢你的帮助,Steve

您不需要反射。你可以简单地使用

  • class_implements—返回给定类实现的接口

代码片段示例:

var_dump(class_implements($obj));

输出:

array(2) {
  ["B"]=>
  string(1) "B"
  ["A"]=>
  string(1) "A"
}
<?php
interface A {}
interface B extends A {}
class C implements B {}
$obj = new C();
$reflection = new ReflectionClass($obj);
echo "<pre>";
print_r($reflection->getInterfaces());
echo "</pre>";

您的示例为我输出了以下内容(IDE调试器运行在PHP 5.2.17上):

Array
(
    [B] => ReflectionClass Object
        (
            [name] => B
        )
    [A] => ReflectionClass Object
        (
            [name] => A
        )
)

相关内容

  • 没有找到相关文章

最新更新