2024 年日本 PHP 研討會

ReflectionClass::getInterfaceNames

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

ReflectionClass::getInterfaceNames取得介面名稱

說明

public ReflectionClass::getInterfaceNames(): 陣列

取得介面名稱。

參數

此函式沒有參數。

回傳值

一個數值索引陣列,其值為介面名稱。

範例

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

<?php
介面 Foo { }

介面
Bar { }

類別
Baz 實作 Foo, Bar { }

$rc1 = new ReflectionClass("Baz");

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

以上範例會輸出類似以下的內容:

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

另請參閱

新增註釋

使用者貢獻的註釋 2 則註釋

pinpin
13 年前
介面名稱似乎是以定義的順序列出的
- 「extends」(繼承)的優先順序高於「implements」(實作)(也就是說,首先會列出(在)父類別(如果有的話)中實作的介面,然後才是類別本身實作的介面)
- 當一次/同一層級實作多個介面時,可能是
+ 來自「implements」:它們會以定義的順序列出
+ 來自「extends」(一個類別繼承另一個實作多個介面的類別;或一個介面繼承多個介面):它們會以**相反**的順序列出

<?php
介面 Foo {}
介面
Bar {}
介面
Other {}
介面
Foobar 延伸 Foo, Bar {}
介面
Barfoo 延伸 Bar, Foo {}

類別
Test1 實作 Foo, Bar {}
類別
Test2 實作 Bar, Foo {}

類別
Test3 延伸 Test1 {}
類別
Test4 延伸 Test2 {}

類別
Test5 延伸 Test1 實作 Other {}

類別
Test6 實作 Foobar, Other {}
類別
TestO 實作 Other {}
類別
Test7 延伸 TestO 實作 Barfoo {}

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

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

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

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

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

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

$r=新 ReflectionClass('Test7');
print_r($r->getInterfaceNames()); // Other, Barfoo, Foo, Bar
?>
pvdhurk
4 年前
備註:它會傳回每個介面的完整名稱(而不是簡短名稱)。

若能提供命名空間的範例會更有幫助。
To Top