我有一个实现接口的类,该接口扩展了另一个接口。设置如下:
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()方法时,它返回一个空数组。
你们中的任何人都知道如何获得扩展给定界面的接口名称吗?
非常感谢你的帮助, 史蒂夫
答案 0 :(得分:1)
<?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
)
)
答案 1 :(得分:1)
你不需要反思。你可以简单地使用
class_implements
- 返回给定类您的代码段示例:
var_dump(class_implements($obj));
输出:
array(2) {
["B"]=>
string(1) "B"
["A"]=>
string(1) "A"
}