PHP 8.2 Enums(列挙型)について

2023-03-19
タグ PHP

PHP 8.2で導入されたEnums(列挙型)は、特定の値のみを許可する型を定義する機能です。これはコードの安全性と可読性が向上する効果があります。以下に、PHP 8.2 Enumsの使用方法とコード例を紹介します。

Enumsの基本的な使用方法

Enumsは、特定の値のみを許可する型を定義する際に使用されます。以下は、簡単なEnumsの例です。

php
enum Status { case Draft; case Published; case Archived; } function updateStatus(Status $status): void { // 処理 } updateStatus(Status::Published); // 正常 updateStatus("Published"); // エラー:Status型が期待されています

この例では、Statusという列挙型を定義し、DraftPublishedArchivedの3つの値を許可しています。updateStatus関数はStatus型の引数を受け取ります。Status::PublishedのようにEnumsの値を渡すと、正常に動作しますが、文字列や数値を渡すとエラーが発生します。

Enumsとメソッド

Enumsにメソッドを定義することもできます。これによって、Enumsの値に対して特定の処理を実行することができます。

php
enum Status { case Draft; case Published; case Archived; public function isArchived(): bool { return $this === self::Archived; } } $status = Status::Published; if ($status->isArchived()) { echo "This article is archived."; } else { echo "This article is not archived."; }

この例では、isArchivedメソッドをStatus列挙型に追加しています。このメソッドは、Enumsの値がArchivedであるかどうかを判断し、結果をtrueまたはfalseで返します。

Enumsとバックトリック演算子

Enumsを使って、定数の値にバックトリック演算子を適用することができます。これによって、Enumsの値を他の形式に変換することが容易になります。

php
enum StatusCode: int { case Ok = 200; case NotFound = 404; case InternalServerError = 500; } function getStatusCodeMessage(StatusCode $code): string { return match ($code) { StatusCode::Ok => 'OK', StatusCode::NotFound => 'Not Found', StatusCode::InternalServerError => 'Internal Server Error', }; } $statusCode = StatusCode::NotFound; echo getStatusCodeMessage($statusCode); // "Not Found"

この例では、StatusCode列挙型を定義し、HTTPステータスコードを整数値で表現しています。getStatusCodeMessage関数では、match構文を使用して、引数として渡されたStatusCode列挙型の値に対応するメッセージを返します。このように、Enumsとバックトリック演算子を組み合わせることで、コードをより読みやすく、保守性の高いものにすることができます。

まとめ

PHP 8.2 の Enums(列挙型)は、特定の値のみを許可する型を定義するための強力な機能です。Enumsを使用することで、コードの安全性、可読性、保守性が向上し、より効率的なプログラミングが可能になります。Enumsを活用して、バリアントや状態を明示的に管理し、PHPコードを改善してみてください。

前のページに戻る