🦣
[Laravel]バリデーションルールの実装確認方法
Laravelでは豊富なバリデーションルールが用意されていて、公式ドキュメントにも説明が記載されていますが、より詳細な仕様を知りたい時は実装を見る必要があると思います。(勉強にもなる)
各ルールの実装を確認
src/Illuminate/Validation/Concerns/ValidatesAttributes.phpというトレイトに各ルールが実装されています。
validate⚪︎⚪︎()というメソッド群で実装されています。⚪︎⚪︎は各ルール名をパスカルケースにしたものです。
ex.
booleanルール => validateBoolean()
dateルール => validateDate()
date_equalsルール => validateDateEquals()
例: booleanルールの実装
例えば、booleanルールの実装は以下です。
/**
* Validate that an attribute is a boolean.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function validateBoolean($attribute, $value)
{
$acceptable = [true, false, 0, 1, '0', '1'];
return in_array($value, $acceptable, true);
}
in_array()で各リテラルと厳密比較しているので、文字列"true", "false"は弾かれる仕様ということがわかりますね。
※ Laravel 11.9.1で確認しました。
おまけ
ちなみにPHPStorm x Laravel Ideaならルール文字列をコマンドクリックして定義にジャンプできます。
便利すぎる🔥

Discussion