ReflectionClass::getInterfaceNames

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

ReflectionClass::getInterfaceNames获取接口名称

描述

public ReflectionClass::getInterfaceNames(): array

获取接口名称。

参数

此函数没有参数。

返回值

一个数值数组,其中接口名称作为值。

示例

示例 #1 ReflectionClass::getInterfaceNames() 示例

<?php
interface Foo { }

interface
Bar { }

class
Baz implements Foo, Bar { }

$rc1 = new ReflectionClass("Baz");

print_r($rc1->getInterfaceNames());
?>

上面的示例将输出类似于以下内容

Array
(
    [0] => Foo
    [1] => Bar
)

参见

添加注释

用户贡献的注释 2 个注释

11
pinpin
13 年前
似乎接口名称实际上是按定义的顺序排列的
- "extends" 优先于 "implements"(即,首先将是来自(实现于)父类的接口(如果有),然后是类本身实现的接口)
- 当多个接口同时/同一级别实现时,它可以是
+ 来自 "implements":它们按定义的顺序排列
+ 来自 "extends"(一个类扩展另一个实现多个接口的类;或一个接口扩展多个接口):它们按相反顺序排列

<?php
interface Foo {}
interface
Bar {}
interface
Other {}
interface
Foobar extends Foo, Bar {}
interface
Barfoo extends Bar, Foo {}

class
Test1 implements Foo, Bar {}
class
Test2 implements Bar, Foo {}

class
Test3 extends Test1 {}
class
Test4 extends Test2 {}

class
Test5 extends Test1 implements Other {}

class
Test6 implements Foobar, Other {}
class
TestO implements Other {}
class
Test7 extends TestO implements Barfoo {}

$r=new ReflectionClass('Test1');
print_r($r->getInterfaceNames()); // Foo, Bar

$r=new ReflectionClass('Test2');
print_r($r->getInterfaceNames()); // Bar, Foo

$r=new ReflectionClass('Test3');
print_r($r->getInterfaceNames()); // Bar, Foo

$r=new ReflectionClass('Test4');
print_r($r->getInterfaceNames()); // Foo, Bar

$r=new ReflectionClass('Test5');
print_r($r->getInterfaceNames()); // Bar, Foo, Other

$r=new ReflectionClass('Test6');
print_r($r->getInterfaceNames()); // Foobar, Bar, Foo, Other

$r=new ReflectionClass('Test7');
print_r($r->getInterfaceNames()); // Other, Barfoo, Foo, Bar
?>
2
pvdhurk
4 年前
为了记录,它将返回每个接口的完整名称(而不是短名称)

带有命名空间的示例会有所帮助。
To Top