私は列挙型の大ファンです。最近、C# を使用する会社で働いていましたが、そこでは列挙型が広く使用されており、いつ列挙型を見つけられるかには慣れています。見つからなくて寂しいです。
私は、曜日、注文のステータス、または以下の例のようにユーザー タイプなど、可能なオプションのセットが限られているものに対してこれらを使用します。
列挙型を使用すると、次のような利点があります。
- 転置や間違った数値の入力によるエラーが減少します。
-将来の値の変更が簡単になります。
- コードが読みやすくなり、バグが入り込む可能性が低くなります。
- 前方互換性の確保 列挙型を使用すると、将来誰かがメンバー名に対応する値を変更した場合にコードが失敗する可能性を大幅に減らすことができます。
PHP 自体は列挙をサポートしていませんが、クラスで定数を使用すると同等の効果を非常に簡単に実現できます。さらに、laravel-enum という Laravel パッケージを作成しました。これにより、キーと値のリスト、値への説明の添付、列挙値を期待するリクエストの検証などのヘルパー関数にアクセスできるようになります。
このガイドでは、使用例とベストプラクティスを含め、Laravel パッケージをインストールするプロセスについて説明します。
インストールパッケージ
composer を介してターミナルで次のコマンドを実行してパッケージをインストールできます:
$ composer require bensampo/laravel-enum
以下のバージョンの Laravel を使用している場合5.5 バージョンでは、サービス プロバイダーを config/app.php に追加する必要があります。
'BenSampo\Enum\EnumServiceProvider'
最初の列挙を作成します
ユーザー タイプの列挙を作成します。このサンプル アプリケーションでは、ユーザーは管理者、有料メンバー、メンバーの 3 つのユーザー タイプのいずれかになります。
パッケージには列挙を作成するためのジェネレーターが含まれているため、次のコマンドを実行して UserType という名前の列挙を作成できます。ファイルは「app/Enums/UserType.php」に作成されます
php artisan make:enum UserType
Youこのファイルにはある程度の足場が含まれています。ファイルの先頭近くで、可能なオプションのリストが定数として定義されています。これらの定数値はデータベースに保存されるため、整数を使用するのが最適であることがわかりましたが、各値が一意である限り、整数の使用に制限はありません。
この例のオプションは次のようになります。
const Administrator = 0; const PaidMember = 1; const Member = 2;
値をデータベースに保存します
これで、いくつかの可能性を備えた列挙ができたので、それを使用し始めることができます。ユーザーテーブルを移行する場合、以下を追加できます。
$table->tinyInteger('type')->unsigned()->default(UserType::Member);
null は列挙型のオプションではないため、デフォルト値を設定する必要があります。この例では、デフォルト ユーザーが標準メンバーになることを想定する必要があります。
ファイルの先頭にこの列挙の use ステートメントが含まれていることを確認してください。
use App\Enums\UserType;
操作での列挙型の使用
現在のユーザー モデルには type のプロパティがあるため、それにアクセスして列挙値と比較できます。これが enum の本当の利点であり、私が enum を気に入っている理由です。以下の使用例と考えられる代替案をご覧ください。
if ($user->type === UserType::PaidMember) { // 在这里只是做一些付费会员的事情. }
列挙型を使用しない場合、次のようなコードになる可能性があります:
if ($user->type === 1) { //これは何を意味します 1平均?? // ... } if ($user->type === 'PaidMember') { // 一体なぜこれがまた文字列なのでしょうか?
以上がLaravel で列挙型を使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。