【PHP8.x】ReflectionEnum::implementsInterface()メソッドの使い方
implementsInterfaceメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
implementsInterfaceメソッドは、リフレクションされた列挙型が特定のインターフェースを実装しているかどうかを判定するメソッドです。PHP 8で導入された列挙型(Enum)は、定数のセットを定義するための機能であり、これ自体がクラスのように振る舞い、インターフェースを実装することが可能です。このメソッドは、ReflectionEnumクラスのインスタンスに対して呼び出され、引数として検証したいインターフェースの名前を文字列で、またはそのインターフェースを表すReflectionClassオブジェクトの形で受け取ります。
具体的には、対象の列挙型が指定されたインターフェースのすべてのメソッドを実装している場合にtrueを返し、実装していない場合はfalseを返します。これにより、プログラムの実行時に、特定の列挙型が期待される振る舞いを保証するインターフェースの契約に従っているかを動的に確認することができます。これは、柔軟な型チェックや、異なる列挙型に対して共通の処理を行いたい場合に特に役立ちます。リフレクションAPIは、実行時にクラスやインターフェースの構造を調べる強力なツールであり、このメソッドはその一環として列挙型のインターフェース実装状況を効率的に判断するために使用されます。
構文(syntax)
1<?php 2 3// インターフェースを定義します 4interface MyPrintable 5{ 6 public function toString(): string; 7} 8 9// 列挙型を定義し、上記インターフェースを実装させます 10enum Status implements MyPrintable 11{ 12 case Active; 13 case Inactive; 14 15 public function toString(): string 16 { 17 return $this->name; 18 } 19} 20 21// ReflectionEnum オブジェクトを作成します 22$reflectionEnum = new ReflectionEnum(Status::class); 23 24// implementsInterface メソッドの構文を使って、 25// 列挙型が特定のインターフェースを実装しているかを確認します 26$doesImplement = $reflectionEnum->implementsInterface(MyPrintable::class);
引数(parameters)
string|ReflectionClass $interface
- string|ReflectionClass $interface: チェックしたいインターフェースの名前 (文字列) または ReflectionClass オブジェクト
戻り値(return)
bool
指定されたEnumクラスが、指定されたインターフェースを実装しているかどうかを示す真偽値を返します。