CONTENT
こんにちは、大阪エンジニアのYです。
私は主にJAVAのエンジニアですが最近PHPに触れる機会も多くなっており、PHPのフレームワーク「Laravel」でオリジナルのバリデーションルールを実装する機会があったので紹介したいと思います。
そもそもバリデーションとは・・・?
・「確認」や「検証」を表す言葉
プログラミングに於いては「入力内容が要件を満たしているかを確認すること」と指します。入力の必須チェックや桁数チェックが分かりやすい例になります。
Laravelでは基本的な項目チェックはだいたい標準で準備されており、その内容を特定項目のルールとして実装するだけで簡単にバリデーションのチェックが実現できます。
ただ、あくまでも一般的なチェックになるのでアプリケーション独自のバリデーションを設定しようとすると別途実装が必要となります。
今回はルールの定義部分だけの紹介となるので、画面に対してバリデーションを設定する実装については割愛させて頂きます。
(基本的なバリデーション設定)
'param1' => 'required|string|max:255'
上記の例だと画面項目「param1」に対して
・required:必須
・string:文字列
・max:255:最大文字数255文字
のバリデーションを設定する実装となります。
(いずれもLaravel標準のバリデーションルールです。)
では、上記標準ルールにparam1に半角英数以外が含まれる場合にエラーを返すような独自ルールを追加していきます。
【STEP1. 独自バリデーションルール用クラスを追加】
(追加クラス)/app/Providers/ValidatorServiceProvider.php
「ServiceProvider」を継承するかたちで「boot」メソッドをオーバーライドしチェックに関する定義を実装します。
(今回の例だと、バリデーションルール「half_alpha_num」をバリデーション定義に追加しているかたちとなります。)
【STEP2. 上記クラスがServiceとして読み込まれるよう定義を追加】
(変更クラス)/bootstrap/cache/services.php
「providers」配列に上記で追加したクラスを追加します。
【STEP3. 追加したルールを項目に設定する】
(変更前)'param1' => 'required|string|max:255'
(変更後)'param1' => 'required|string|max:255|half_alpha_num'
以上3ステップで実装完了です。
他にも方法はありますのであくまでも一例にはなりますがすごく簡単にバリデーションが追加できました。
こういった拡張のしやすさも考慮したフレームワークを構築するエンジニアには尊敬の念しかありません・・・。
いつか自身もこのレベルになれたらと思いますがまだまだ道のりは長そうです。
だいぶ端折りながらの紹介とはなりましたが誰かの実装の参考になれば嬉しいです!