この記事では、PHP を使用して列挙を実装する方法について説明します。一定の参考値があるので、困っている友人は参考にしていただければ幸いです。
列挙
数学とコンピュータ サイエンスの理論では、集合の 列挙とは、ある有限の数列セットのすべてのメンバーをリストするプログラム、または数列の数をリストするプログラムです。特定のタイプのオブジェクト。この 2 つのタイプは、多くの場合 (常にではありませんが) 重複します。列挙型は、整定定数の名前付きコレクションです。列挙型は日常生活で非常に一般的です。たとえば、週を表す SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、および SATURDAY は列挙型です。 ——Wikipedia
ビジネス シナリオ
実際の開発プロセスでは、列挙型に触れるのは非常に簡単ですが、PHP の列挙型のネイティブ サポートはあまり充実していないためです。多くの場合、開発者は列挙型の使用に注意を払わず、代わりにグローバル定数またはクラス定数を使用しますが、原則として、これら 2 つのデータは依然として 文字列
であり、型の判定には使用できません。
待ってください。多くの場合、単純な 1/2/3/4 または 0/1 を使用してそれを表し、ドキュメントまたはコメントでこれらを指定します。
より高度な方法としては、定数として定義して統一アクセスを容易にすることですが、定数の値は文字列のままであり、型を判断することはできません。
ここで、PHP の列挙のサポートについて見てみる必要があります。PHP は列挙を完全にはサポートしていませんが、SPL
1 2 3 4 5 6 7 |
|
Spl_Types をインストールすると、意図せず使用コストが増加します。他に解決策はありますか?答えは「はい」です。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Enum::WAIT_PAYMENT を直接使用して取得できます。価値があります。しかし、パラメータが渡される場所ではそれを検証できません。
1 2 3 4 5 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
まずは形になりつつある
部分的には達成できたような気がしますが、どうやってもっとうまくやってもらおうか?もう一度作り直してみましょう。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
|
コンストラクターを追加し、オプションの値を渡すことができるようにし、その値が
__toString メソッドの出力値として使用されます。 time 渡されたパラメータが期待したものと異なっていても、機能は実装されているようです。しかし、一致しない場合はどうすればよいでしょうか?ほら、3️⃣の時点ですでに事故になっていますが、何か改善方法はありますか?答えはもちろん
Yes です。ここでは、PHP のもう 1 つの優れた点であるリフレクション クラスを使用します。もちろん、これは PHP に固有のものではなく、他の言語でも利用できます。
もちろん、リフレクションに加えて、
__callStatic メソッド内で別の機能
メソッドのオーバーロード も使用します。
さらに進みます
public static __callStatic(string $name, array $arguments):mixed静的コンテキストでアクセスできないメソッドを呼び出す場合、 __callStatic() が呼び出されます。$name パラメータは、呼び出されるメソッドの名前です。 $arguments パラメーターは、メソッド $name に渡されるパラメーターを含む列挙配列です。変革を続けます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
|
End
値が列挙範囲内にあるかどうかを判断するなど、他のニーズがある場合はどうすればよいでしょうか?すべての列挙値を取得しますか?すべての列挙キーを取得し、列挙キーが有効かどうかを判断しますか?自動フォーマット "__toString メソッドでは文字列のみを返すことができるため、場合によっては整数、ブール値、およびその他の型の必要性を強制する場合があります。"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 |
|
以上がPHPを使用して列挙を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。