ホームページ >バックエンド開発 >PHPチュートリアル >PHP で列挙型を使用するにはどうすればよいですか (8.1 より前のバージョンの回避策も含む)

PHP で列挙型を使用するにはどうすればよいですか (8.1 より前のバージョンの回避策も含む)

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-17 16:33:10468ブラウズ

How Do I Use Enumerations in PHP, Including Workarounds for Versions Before 8.1?

PHP の列挙: PHP 8.1 のサポートと回避策

PHP には長い間ネイティブ列挙が欠けており、開発者は回避策を模索していました。しかし、PHP 8.1 のリリースにより、ついに本格的な enum サポートが到着しました。

PHP 8.1: ネイティブ Enums

PHP 8.1 以降、enum は正式にサポートされます。 。これらは、事前定義された値のセットを定義するための簡潔でタイプセーフな方法を提供します。

enum DaysOfWeek: int
{
    case Sunday = 0;
    case Monday = 1;
    // etc.
}

PHP 8.0 以前の回避策

PHP 8.1 より前のいくつかの回避策一般的にあったused:

  • 定数: 定数は、グローバルで不変の値を提供します。ただし、名前空間の衝突が発生する可能性があり、真の列挙型ほど多用途ではありません。
  • 配列: 配列はより柔軟ですが、オーバーライドでき、IDE では自動入力がサポートされていません。

より高度な回避策には、静的検証を備えた基本 enum クラスの作成が含まれますメソッド:

abstract class BasicEnum
{
    // ...
    public static function isValidName($name, $strict = false) {}
    public static function isValidValue($value, $strict = true) {}
}

このクラスを拡張すると、直接的な入力検証が可能になります:

abstract class DaysOfWeek extends BasicEnum
{
    // ...
}

DaysOfWeek::isValidName('Humpday');                  // false
DaysOfWeek::isValidValue(7);                         // false

SplEnum for PHP 5.3

PHP 5.3 を使用している場合、またはその後、SplEnum はより堅牢な機能を提供します。回避策:

$days = new SplEnum(array(
    'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'
));

if ($days->isValid('Monday')) {
    // ...
}

結論

PHP 8.1 のネイティブ列挙により、コードが簡素化され、型安全性が向上します。以前のバージョンには、定数、配列、BasicEnum クラスや SplEnum クラスなど、さまざまな回避策が存在します。

以上がPHP で列挙型を使用するにはどうすればよいですか (8.1 より前のバージョンの回避策も含む)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。