PHP の列挙
列挙は、特定の概念またはコンテキストを表すために使用される事前定義された値の有限セットを表します。 PHP にはネイティブに列挙型がありませんが、その機能をシミュレートするための解決策と回避策があります。
PHP 8.1 以降
PHP 8.1 以降、列挙型は完全にサポートされており、列挙型を使用できます。 enum キーワードを使用して定義されます。曜日を定義する列挙の例:
enum DaysOfWeek: int { case Sunday = 0; case Monday = 1; // etc. }
PHP 8.0 以前
PHP 8.1 より前では、列挙をエミュレートするためのオプションがいくつかあります。
1.定数
PHP 定数は、列挙型をシミュレートするためにグループ化できますが、そのグローバルな性質により、名前空間の衝突が発生する可能性があります。
2.配列
配列には柔軟性がありますが、事前定義された値や IDE の自動補完機能がありません。さらに、それらの値は実行時に上書きできます。
3. BasicEnum クラス
抽象クラスを使用して、基本的な列挙機能を実装できます:
abstract class BasicEnum { private static function getConstants() { // Cache reflection results for improved performance ... } public static function isValidName($name, $strict = false) { // Validate a name using reflection ... } public static function isValidValue($value, $strict = true) { // Validate a value using reflection ... } }
このクラスを拡張することで、検証機能を備えたカスタム列挙を作成できます:
abstract class DaysOfWeek extends BasicEnum { const Sunday = 0; const Monday = 1; // etc. } // Validation examples DaysOfWeek::isValidName('Humpday'); // false DaysOfWeek::isValidValue(5); // true
4. SplEnum
PHP 5.3 以降、SplEnum クラスを列挙の作成に使用できるようになりました。これは列挙型を定義および使用するための堅牢かつ標準化された方法を提供しますが、列挙型メンバーのインスタンス化が必要であり、これはすべての場合において望ましいとは限りません。
以上がバージョンの違いを考慮して、PHP で列挙型を効果的に実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。