Laravel で列挙型を使用する

Guanhui
リリース: 2020-06-12 18:10:39
転載
3267 人が閲覧しました

Laravel で列挙型を使用する

私は列挙型の大ファンです。最近、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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート