phpday 2025 - Call For Papers

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
)

参考

add a note

User Contributed Notes 2 notes

up
11
pinpin
13 years ago
It seems the interface names are actually listed in a defined order:
- "extends" takes precedence over "implements" (i.e. first will be interfaces from (implemented in) the parent class (if any), then interfaces implemented in the class itself)
- when multiple interfaces are implemented at one time/level, it can be:
+ from an "implements" : they're listed in the defined order
+ from an "extends" (a class extends another class which implements multiple interfaces; or an interface extends multiple interfaces) : they're listed in REVERSE order

<?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
?>
up
2
pvdhurk
4 years ago
For the record, it will return the full name (not the short name) for each Interface

Example with namespace would've helped.
To Top