Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】get_declared_interfaces()関数の使い方

get_declared_interfaces関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

get_declared_interfaces関数は、現在実行中のPHPスクリプトで宣言されているすべてのインターフェースの名前を取得する関数です。この関数はPHPの組み込み(internal)関数であり、追加のモジュールをインストールすることなく利用できます。引数は必要ありません。

この関数を実行すると、interfaceキーワードを使って定義された、PHPの環境内で利用可能なすべてのインターフェースの名前が、文字列の配列として返されます。例えば、大規模なアプリケーションを開発している際や、複数のライブラリを使用している状況で、どのインターフェースが既に読み込まれていて利用可能なのかを確認したい場合に非常に便利です。

戻り値は、宣言されているインターフェースの名前が要素として格納された配列です。もし、現時点で宣言されているインターフェースが一つも存在しない場合は、空の配列が返されます。この機能は、アプリケーションのデバッグ作業において、特定のインターフェースが正しくロードされているかを確認したり、リフレクション機能と組み合わせて動的にインターフェースの情報を取得・分析したりする際に役立ちます。インターフェースの名前は、大文字と小文字を区別しない文字列として扱われます。また、この関数はクラスやトレイトの名前は含まないため、純粋にインターフェースのみを対象とした正確な情報を提供します。これにより、プログラムの実行時に存在するインターフェースの全体像を把握し、より堅牢なコードを記述するための手助けとなります。

構文(syntax)

1<?php
2
3$declaredInterfaces = get_declared_interfaces();
4print_r($declaredInterfaces);
5
6?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

array

定義済みのすべてのインターフェースの名前を格納した配列を返します。

サンプルコード

宣言されたインターフェース一覧を取得する

1<?php
2
3/**
4 * PHPの推奨コーディングスタイルに従い、サンプル用のインターフェースを宣言します。
5 */
6
7/**
8 * ログ記録機能を提供するインターフェースの例。
9 */
10interface LoggerInterface
11{
12    public function log(string $message): void;
13}
14
15/**
16 * 設定ロード機能を提供するインターフェースの例。
17 */
18interface ConfigLoaderInterface
19{
20    public function loadConfig(string $path): array;
21}
22
23/**
24 * 宣言されたが、まだコード内で利用されていないことを想定したインターフェースの例。
25 *
26 * このインターフェースは、キーワード「is declared but not used」の状況を示すために用意されました。
27 * PHPの実行環境では宣言されていますが、このサンプルコードの他の部分では具体的に使用されていません。
28 */
29interface UnusedServiceInterface
30{
31    public function doSomething(): void;
32}
33
34/**
35 * 現在のスクリプトで宣言されている全てのインターフェース名を取得し、表示します。
36 *
37 * システムエンジニアを目指す初心者の方へ:
38 * この関数は、現在PHPスクリプト内で利用可能な(宣言されている)インターフェースの一覧を
39 * 確認する際に役立ちます。例えば、特定のライブラリがどのようなインターフェースを提供しているか、
40 * あるいは開発中のアプリケーションで意図せず宣言されたまま使われていないインターフェースがないか
41 * (キーワード「is declared but not used」)を確認する手がかりになります。
42 */
43function displayDeclaredInterfaces(): void
44{
45    // get_declared_interfaces() 関数は、現在PHPスクリプト内で宣言されている
46    // 全てのインターフェース(PHPの内部インターフェースも含む)の名前を
47    // 文字列の配列として返します。
48    $declaredInterfaces = get_declared_interfaces();
49
50    echo "--- 宣言されているインターフェース一覧 ---\n";
51
52    if (empty($declaredInterfaces)) {
53        echo "現在、宣言されているインターフェースはありません。\n";
54        return;
55    }
56
57    // 取得したインターフェース名を一つずつ表示します。
58    foreach ($declaredInterfaces as $interfaceName) {
59        echo "- " . $interfaceName . "\n";
60    }
61
62    echo "------------------------------------------\n";
63
64    // キーワード「is declared but not used」に関連付けて、特定のインターフェースの存在を確認します。
65    $potentialUnusedInterface = 'UnusedServiceInterface';
66    if (in_array($potentialUnusedInterface, $declaredInterfaces)) {
67        echo "\n[ヒント]: インターフェース '{$potentialUnusedInterface}' は宣言されていますが、";
68        echo "このサンプルコードでは直接使用されていません。\n";
69        echo "これは「宣言されたが使われていない」状況の例となります。\n";
70    }
71}
72
73// 上記の関数を実行し、結果を出力します。
74displayDeclaredInterfaces();

get_declared_interfaces() 関数は、現在のPHPスクリプト実行環境で宣言されている全てのインターフェースの名前を取得するために使用されます。この関数は引数を必要とせず、戻り値として、PHPの組み込みインターフェースを含む、宣言済みのインターフェース名を文字列の配列として返します。

システムエンジニアを目指す初心者の方にとって、この関数は、現在利用可能なインターフェースの一覧を確認する際に特に有用です。例えば、使用しているライブラリがどのようなインターフェースを提供しているかを調べたり、ご自身の開発しているアプリケーションで意図せずに宣言されたまま使われていないインターフェース(いわゆる「is declared but not used」の状態)がないかをチェックする手がかりとして活用できます。

サンプルコードでは、LoggerInterfaceConfigLoaderInterfaceといった具体的なインターフェースに加え、UnusedServiceInterfaceという、意図的に宣言はされているが他の部分では使用されていないインターフェースを定義しています。get_declared_interfaces()を実行することで、これらのインターフェース名が全て取得され、表示されます。これにより、コード内で宣言されているインターフェースが実際にどのように一覧表示されるか、また「宣言されているが使われていない」インターフェースの状況を把握する方法を具体的に確認することができます。

このサンプルコードは、現在PHPスクリプトで宣言されている全てのインターフェースを取得するget_declared_interfaces()関数の使い方を示しています。この関数は、PHPが提供する内部インターフェースも含め、そのスクリプト実行時点までにロードされた全てのインターフェース名を文字列の配列として返します。

特に注意すべきは、「is declared but not used」の状況です。宣言されたインターフェースがコード内で使われていない場合、それは冗長なコードとなり、保守性を下げる原因になります。この関数は、そういった未使用のインターフェースを見つけ出す手がかりとなりますので、定期的に確認し、不要なものは削除を検討することをお勧めします。戻り値はインターフェース名の文字列配列ですので、特定のインターフェースの存在を確認するにはin_array()関数などが活用できます。

PHPで宣言済みインターフェース一覧を取得する

1<?php
2
3/**
4 * 宣言されているインターフェースの一覧を取得し、表示するサンプルコードです。
5 * システムエンジニアを目指す初心者向けに、PHPのインターフェースの概念と
6 * get_declared_interfaces関数の使い方を理解しやすく構成されています。
7 */
8
9// まず、このスクリプト内で使用するサンプルインターフェースをいくつか定義します。
10// これらのインターフェースは、get_declared_interfaces()関数によって検出されます。
11interface LoggerInterface
12{
13    public function log(string $message): void;
14}
15
16interface CacheInterface
17{
18    public function get(string $key): mixed;
19    public function set(string $key, mixed $value, int $ttl = 0): bool;
20}
21
22// get_declared_interfaces()関数を呼び出して、現在宣言されているすべてのインターフェース名を取得します。
23// この関数は引数を取らず、宣言されているインターフェース名の配列を返します。
24$declaredInterfaces = get_declared_interfaces();
25
26// 取得したインターフェース名のリストをforeachループで出力します。
27echo "現在宣言されているインターフェースのリスト:\n";
28echo "--------------------------------------\n";
29
30if (empty($declaredInterfaces)) {
31    echo "宣言されているインターフェースはありません。\n";
32} else {
33    foreach ($declaredInterfaces as $interfaceName) {
34        // 各インターフェース名を一行ずつ表示します。
35        echo "- " . $interfaceName . "\n";
36    }
37}
38echo "--------------------------------------\n";
39
40// 注意: このリストには、PHPの内部(ビルトイン)インターフェースや、
41// スクリプトの実行前にロードされたライブラリによって宣言されたインターフェースも含まれます。
42// 上記で定義した LoggerInterface や CacheInterface もこのリストに含まれているはずです。
43
44?>

PHPのget_declared_interfaces関数は、現在利用可能なすべてのインターフェースの名前を取得するための組み込み関数です。インターフェースとは、クラスが実装すべきメソッドの型(シグネチャ)を定義する「契約」のようなもので、異なるクラス間で共通の振る舞いを保証し、コードの柔軟性や拡張性を向上させる役割があります。

この関数は引数を必要としません。呼び出すと、現在宣言されているインターフェース名が文字列の配列として戻り値として返されます。サンプルコードでは、まずLoggerInterfaceCacheInterfaceという二つのカスタムインターフェースを定義しています。その後、get_declared_interfaces()を実行することで、これらのカスタムインターフェースだけでなく、PHP自体が持つ内部インターフェースや、スクリプトの実行前に読み込まれたライブラリのインターフェースも含め、現在システムで利用可能なすべてのインターフェースのリストを取得しています。

取得されたインターフェース名は、foreachループを使って一つずつ画面に表示され、現在どのようなインターフェースが存在しているのかを簡単に確認することができます。これにより、定義したインターフェースが正しく認識されているか、またPHP環境で利用可能なインターフェースを把握するのに役立ちます。

get_declared_interfaces関数は、PHPの実行時までに宣言されている全てのインターフェース名を文字列の配列として返します。これには、ご自身で定義したインターフェースの他に、PHPの内部インターフェース(例:Throwable)や、スクリプトの実行前にロードされたライブラリによって宣言されたインターフェースも含まれる点にご注意ください。引数は不要です。インターフェースが一つも宣言されていない場合でも、戻り値は常に空の配列となるため、foreachなどで安全に処理できます。主にデバッグや、アプリケーション内で利用可能なインターフェースの一覧を確認する際に役立ちます。

関連コンテンツ

関連プログラミング言語