• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • ReflectionClass::getInterfaceNames()

    (PHP 5 >= 5.2.0, PHP 7)

    获取接口(interface)名称

    说明

    publicReflectionClass::getInterfaceNames(void): array

    获取接口(interface)名称。

    参数

    此函数没有参数。

    返回值

    一个数值数组,接口(interface)的名称是数组的值。

    范例

    Example #1ReflectionClass::getInterfaceNames()例子

    <?php
    interface Foo { }
    interface Bar { }
    class Baz implements Foo, Bar { }
    $rc1 = new ReflectionClass("Baz");
    print_r($rc1->getInterfaceNames());
    ?>
    

    以上例程的输出类似于:

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

    参见

    • ReflectionClass::getInterfaces() 获取接口
    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
    ?>