文字

ReflectionClass::getInterfaceNames

(PHP 5 >= 5.2.0)

ReflectionClass::getInterfaceNames获取接口(interface)名称

说明

public array ReflectionClass::getInterfaceNames ( void )

获取接口(interface)名称。

参数

此函数没有参数。

返回值

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

范例

Example #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
)

参见

  • ReflectionClass::getInterfaces() - 获取接口

用户评论:

[#1] pinpin [2011-03-27 04:11:33]

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 FooBar {}
interface 
Barfoo extends BarFoo {}

class 
Test1 implements FooBar {}
class 
Test2 implements BarFoo {}

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

class 
Test5 extends Test1 implements Other {}

class 
Test6 implements FoobarOther {}
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
?>

上一篇: 下一篇: