🦣

[Laravel]バリデーションルールの実装確認方法

2024/06/19に公開

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