Valitron は、依存関係のない、シンプル、最小限、エレガントなスタンドアロン検証ライブラリです。 Valitron は、読みやすく簡潔な構文に重点を置いた、シンプルで直接的な検証方法を使用します。 Valitron は、あなたが探していたシンプルで実用的な検証ライブラリです。
Tidelift サブスクリプションでサポートされている vlucas/valitron を入手してください
Valitron は、Symfony の HttpFoundation などの他のフレームワークの大規模なコンポーネントに依存する他の検証ライブラリに対する不満から作成され、基本的な検証には実際には必要のない大量の追加ファイルが取り込まれます。また、他の検証ライブラリで必要とされるように、新しいクラスをインスタンス化して値を 1 つずつ検証することで各値を個別に検証するのではなく、すべての検証を 1 回の呼び出しで実行するために使用される意図的に単純な構文も備えています。
つまり、Valitron は、検証ライブラリで探していたものの、これまで見つけることができなかったすべてのものです。シンプルで実用的な構文、意味のある軽量コード、カスタム コールバックと検証用に拡張可能、十分にテストされており、依存関係がありません。 。始めましょう。
Valitron は Composer を使用して以下をインストールおよび更新します。
curl -s http://getcomposer.org/installer | php
php composer.phar require vlucas/valitron
以下の例では PHP 5.4 構文を使用していますが、Valitron は PHP 5.3 以降で動作します。
使用方法はシンプルで簡単です。検証するデータの配列を指定し、いくつかのルールを追加して、 validate()
を呼び出すだけです。エラーがある場合は、 errors()
を呼び出してエラーを取得できます。
$ v = new Valitron Validator ( array ( ' name ' => ' Chester Tester ' ));
$ v -> rule ( ' required ' , ' name ' );
if ( $ v -> validate ()) {
echo " Yay! We're all good! " ;
} else {
// Errors
print_r ( $ v -> errors ());
}
この形式を使用すると、 $_POST
データを直接かつ簡単に検証でき、 required
のようなルールをフィールドの配列に適用することもできます。
$ v = new Valitron Validator ( $ _POST );
$ v -> rule ( ' required ' , [ ' name ' , ' email ' ]);
$ v -> rule ( ' email ' , ' email ' );
if ( $ v -> validate ()) {
echo " Yay! We're all good! " ;
} else {
// Errors
print_r ( $ v -> errors ());
}
ドット構文を使用して多次元配列のメンバーにアクセスし、アスタリスクを使用して配列の各メンバーを検証できます。
$ v = new Valitron Validator ( array ( ' settings ' => array (
array ( ' threshold ' => 50 ),
array ( ' threshold ' => 90 )
)));
$ v -> rule ( ' max ' , ' settings.*.threshold ' , 100 );
if ( $ v -> validate ()) {
echo " Yay! We're all good! " ;
} else {
// Errors
print_r ( $ v -> errors ());
}
または、ドット構文を使用して数値配列のすべてのメンバーを検証します。
$ v = new Valitron Validator ( array ( ' values ' => array ( 50 , 90 )));
$ v -> rule ( ' max ' , ' values.* ' , 100 );
if ( $ v -> validate ()) {
echo " Yay! We're all good! " ;
} else {
// Errors
print_r ( $ v -> errors ());
}
ドット表記を使用してネストされた値にアクセスすることもできます。
$ v = new Valitron Validator ( array ( ' user ' => array ( ' first_name ' => ' Steve ' , ' last_name ' => ' Smith ' , ' username ' => ' Batman123 ' )));
$ v -> rule ( ' alpha ' , ' user.first_name ' )-> rule ( ' alpha ' , ' user.last_name ' )-> rule ( ' alphaNum ' , ' user.username ' );
if ( $ v -> validate ()) {
echo " Yay! We're all good! " ;
} else {
// Errors
print_r ( $ v -> errors ());
}
言語と言語ディレクトリをグローバルに設定します。
// boot or config file
use Valitron Validator as V ;
V:: langDir ( __DIR__ . ' /validator_lang ' ); // always set langDir before lang.
V:: lang ( ' ar ' );
エラー メッセージの出力内の {field} 名を無効にします。
use Valitron Validator as V ;
$ v = new Valitron Validator ([ ' name ' => ' John ' ]);
$ v -> rule ( ' required ' , [ ' name ' ]);
// Disable prepending the labels
$ v -> setPrependLabels ( false );
// Error output for the "false" condition
[
[ " name " ] => [
" is required "
]
]
// Error output for the default (true) condition
[
[ " name " ] => [
" name is required "
]
]
必須の条件ルールを使用して、条件付きで値を要求できます。この例では、認証のために、電子メールとパスワードの両方が存在しない場合はトークンが必要で、電子メール アドレスが存在する場合はパスワードが必要です。
// this rule set would work for either data set...
$ data = [ ' email ' => ' [email protected] ' , ' password ' => ' mypassword ' ];
// or...
$ data = [ ' token ' => ' jashdjahs83rufh89y38h38h ' ];
$ v = new Valitron Validator ( $ data );
$ v -> rules ([
' requiredWithout ' => [
[ ' token ' , [ ' email ' , ' password ' ], true ]
],
' requiredWith ' => [
[ ' password ' , [ ' email ' ]]
],
' email ' => [
[ ' email ' ]
]
' optional ' => [
[ ' email ' ]
]
]);
$ this -> assertTrue ( $ v -> validate ());
required
- フィールドは必須ですrequiredWith
- 他のフィールドが存在する場合、フィールドは必須ですrequiredWithout
- 他のフィールドが存在しない場合はフィールドが必須ですequals
- フィールドは別のフィールドと一致する必要があります (電子メール/パスワードの確認)different
- フィールドは別のフィールドとは異なる必要がありますaccepted
- チェックボックスまたはラジオを受け入れる必要があります (はい、オン、1、true)numeric
- 数値である必要がありますinteger
- 整数値である必要がありますboolean
- ブール値である必要がありますarray
- 配列である必要がありますlength
- 文字列は特定の長さでなければなりませんlengthBetween
- 文字列は指定された長さの間にある必要がありますlengthMin
- 文字列は指定された長さより大きくなければなりませんlengthMax
- 文字列は指定された長さより小さくなければなりませんmin
- 最小値max
- 最大値listContains
- 指定された配列値に対して in_array チェックを実行します ( in
とは逆)in
- 指定された配列値に対して in_array チェックを実行しますnotIn
- ルールin
否定 (値の配列内にない)ip
- 有効なIPアドレスipv4
- 有効な IP v4 アドレスipv6
- 有効な IP v6 アドレスemail
- 有効なメールアドレスemailDNS
- アクティブな DNS レコードを持つ有効な電子メール アドレスurl
- 有効な URLurlActive
- アクティブな DNS レコードを持つ有効な URLalpha
- アルファベット文字のみalphaNum
- 英字と数字のみascii
- ASCII 文字のみslug
- URL スラグ文字 (az、0 ~ 9、-、_)regex
- フィールドは指定された正規表現パターンに一致しますdate
- フィールドは有効な日付ですdateFormat
- フィールドは指定された形式の有効な日付ですdateBefore
- フィールドは有効な日付であり、指定された日付より前ですdateAfter
- フィールドは有効な日付であり、指定された日付より後ですcontains
- フィールドは文字列であり、指定された文字列が含まれていますsubset
- フィールドは配列またはスカラーであり、すべての要素は指定された配列に含まれますcontainsUnique
- フィールドは配列であり、一意の値が含まれていますcreditCard
- フィールドは有効なクレジット カード番号です。instanceOf
- フィールドには指定されたクラスのインスタンスが含まれますoptional
- データ配列に値を含める必要はありません。ただし、そうである場合は、検証に合格する必要があります。arrayHasKeys
- フィールドは配列であり、指定されたすべてのキーが含まれます。注: 浮動小数点数を最小/最大バリデータと比較する場合は、精度と信頼性を高めるために BCMath 拡張機能をインストールする必要があります。 Valitron が動作するためにこの拡張機能は必須ではありませんが、利用可能な場合は Valitron が使用するため、強くお勧めします。
required
ルールは、フィールドがデータ配列に存在し、null または空の文字列ではないかどうかをチェックします。
$ v -> rule ( ' required ' , ' field_name ' );
追加のパラメーターを使用すると、このルールをより柔軟にし、フィールドがデータ配列に存在するかどうかのみをチェックすることができます。
$ v -> rule ( ' required ' , ' field_name ' , true );
代替構文。
$ v = new Valitron Validator ([ ' username ' => ' spiderman ' , ' password ' => ' Gr33nG0Blin ' , ' required_but_null ' => null ]);
$ v -> rules ([
' required ' => [
[ ' username ' ],
[ ' password ' ],
[ ' required_but_null ' , true ] // boolean flag allows empty value so long as the field name is set on the data array
]
]);
$ v -> validate ();
requiredWith
ルールは、フィールドが必須であること、null ではないこと、空の文字列ではないこと、他のフィールドが存在する場合は、null でなく空の文字列ではないことをチェックします。
// password field will be required when the username field is provided and not empty
$ v -> rule ( ' requiredWith ' , ' password ' , ' username ' );
代替構文。
$ v = new Valitron Validator ([ ' username ' => ' spiderman ' , ' password ' => ' Gr33nG0Blin ' ]);
$ v -> rules ([
' requiredWith ' => [
[ ' password ' , ' username ' ]
]
]);
$ v -> validate ();
注複数の値を配列として指定できます。この場合、いずれかのフィールドが存在する場合、そのフィールドは必須になります。
// in this case the password field will be required if the username or email fields are present
$ v -> rule ( ' requiredWith ' , ' password ' , [ ' username ' , ' email ' ]);
代替構文。
$ v = new Valitron Validator ([ ' username ' => ' spiderman ' , ' password ' => ' Gr33nG0Blin ' ]);
$ v -> rules ([
' requiredWith ' => [
[ ' password ' , [ ' username ' , ' email ' ]]
]
]);
$ v -> validate ();
strict フラグは、 requiredWith
ルールをrequiredWithAll
に変更します。これにより、他のフィールドがすべて存在し、null ではなく、空の文字列ではない場合にのみフィールドが要求されます。
// in this example the suffix field is required only when both the first_name and last_name are provided
$ v -> rule ( ' requiredWith ' , ' suffix ' , [ ' first_name ' , ' last_name ' ], true );
代替構文。
$ v = new Valitron Validator ([ ' first_name ' => ' steve ' , ' last_name ' => ' holt ' , ' suffix ' => ' Mr ' ]);
$ v -> rules ([
' requiredWith ' => [
[ ' suffix ' , [ ' first_name ' , ' last_name ' ], true ]
]
]);
$ v -> validate ();
同様に、この場合でも、 validate()
true を返します。これは、厳密モードではすべてのフィールドが提供されるわけではないため、suffix フィールドは必要ありません。
$ v = new Valitron Validator ([ ' first_name ' => ' steve ' ]);
$ v -> rules ([
' requiredWith ' => [
[ ' suffix ' , [ ' first_name ' , ' last_name ' ], true ]
]
]);
$ v -> validate ();
requiredWithout
ルールは、他のフィールドが存在しない場合、フィールドが必須であること、null でないこと、空の文字列でないことをチェックします。
// this rule will require the username field when the first_name is not present
$ v -> rule ( ' requiredWithout ' , ' username ' , ' first_name ' )
代替構文。
// this will return true, as the username is provided when the first_name is not provided
$ v = new Valitron Validator ([ ' username ' => ' spiderman ' ]);
$ v -> rules ([
' requiredWithout ' => [
[ ' username ' , ' first_name ' ]
]
]);
$ v -> validate ();
注複数の値を配列として指定できます。この場合、いずれかのフィールドが存在しない場合、そのフィールドは必須になります。
// in this case the username field will be required if either the first_name or last_name fields are not present
$ v -> rule ( ' requiredWithout ' , ' username ' , [ ' first_name ' , ' last_name ' ]);
代替構文。
// this passes validation because although the last_name field is not present, the username is provided
$ v = new Valitron Validator ([ ' username ' => ' spiderman ' , ' first_name ' => ' Peter ' ]);
$ v -> rules ([
' requiredWithout ' => [
[ ' username ' , [ ' first_name ' , ' last_name ' ]]
]
]);
$ v -> validate ();
strict フラグは、 requiredWithout
ルールをrequiredWithoutAll
に変更します。これにより、他のすべてのフィールドが存在しない場合にのみフィールドが要求されます。
// in this example the username field is required only when both the first_name and last_name are not provided
$ v -> rule ( ' requiredWithout ' , ' username ' , [ ' first_name ' , ' last_name ' ], true );
代替構文。
$ v = new Valitron Validator ([ ' username ' => ' BatMan ' ]);
$ v -> rules ([
' requiredWithout ' => [
[ ' username ' , [ ' first_name ' , ' last_name ' ], true ]
]
]);
$ v -> validate ();
同様に、この場合、ユーザー名フィールドはすべてのフィールドが提供されているため、厳密モードでは必要ないため、 validate()
引き続き true を返します。
$ v = new Valitron Validator ([ ' first_name ' => ' steve ' , ' last_name ' => ' holt ' ]);
$ v -> rules ([
' requiredWithout ' => [
[ ' suffix ' , [ ' first_name ' , ' last_name ' ], true ]
]
]);
$ v -> validate ();
equals
ルールは、データ配列内の 2 つのフィールドが等しいかどうか、および 2 番目のフィールドが null でないかどうかをチェックします。
$ v -> rule ( ' equals ' , ' password ' , ' confirmPassword ' );
代替構文。
$ v = new Valitron Validator ([ ' password ' => ' youshouldnotseethis ' , ' confirmPassword ' => ' youshouldnotseethis ' ]);
$ v -> rules ([
' equals ' => [
[ ' password ' , ' confirmPassword ' ]
]
]);
$ v -> validate ();
different
ルールは、データ配列内の 2 つのフィールドが同じでないか、異なるかどうか、および 2 番目のフィールドが null でないかどうかをチェックします。
$ v -> rule ( ' different ' , ' username ' , ' password ' );
代替構文。
$ v = new Valitron Validator ([ ' username ' => ' spiderman ' , ' password ' => ' Gr33nG0Blin ' ]);
$ v -> rules ([
' different ' => [
[ ' username ' , ' password ' ]
]
]);
$ v -> validate ();
accepted
ルールは、フィールドが「yes」、「on」、1、または true のいずれかであるかどうかをチェックします。
$ v -> rule ( ' accepted ' , ' remember_me ' );
代替構文。
$ v = new Valitron Validator ([ ' remember_me ' => true ]);
$ v -> rules ([
' accepted ' => [
[ ' remember_me ' ]
]
]);
$ v -> validate ();
numeric
ルールは、フィールドが数値かどうかをチェックします。これは、php の is_numeric() 関数に似ています。
$ v -> rule ( ' numeric ' , ' amount ' );
代替構文。
$ v = new Valitron Validator ([ ' amount ' => 3.14 ]);
$ v -> rules ([
' numeric ' => [
[ ' amount ' ]
]
]);
$ v -> validate ();
integer
ルールは、フィールドが整数かどうかをチェックします。
$ v -> rule ( ' integer ' , ' age ' );
代替構文。
$ v = new Valitron Validator ([ ' age ' => ' 27 ' ]);
$ v -> rules ([
' integer ' => [
[ ' age ' ]
]
]);
$ v -> validate ();
厳密モードのオプションのブール フラグにより、整数が厳密な数値形式で指定されるようになります。したがって、次のルールは true と評価されます。
$ v = new Valitron Validator ([ ' negative ' => ' -27 ' , ' positive ' => ' 27 ' ]);
$ v -> rule ( ' integer ' , ' age ' , true );
$ v -> rule ( ' integer ' , ' height ' , true );
$ v -> validate ();
一方、次の場合は正の数の + が冗長であるため、 false と評価されます。
$ v = new Valitron Validator ([ ' negative ' => ' -27 ' , ' positive ' => ' +27 ' ]);
$ v -> rule ( ' integer ' , ' age ' , true );
$ v -> rule ( ' integer ' , ' height ' , true );
$ v -> validate ();
boolean
ルールは、フィールドがブールかどうかをチェックします。これは、php の is_bool() 関数に似ています。
$ v -> rule ( ' boolean ' , ' remember_me ' );
代替構文。
$ v = new Valitron Validator ([ ' remember_me ' => true ]);
$ v -> rules ([
' boolean ' => [
[ ' remember_me ' ]
]
]);
$ v -> validate ();
array
ルールは、フィールドが配列であるかどうかをチェックします。これは、php の is_array() 関数に似ています。
$ v -> rule ( ' array ' , ' user_notifications ' );
代替構文。
$ v = new Valitron Validator ([ ' user_notifications ' => [ ' bulletin_notifications ' => true , ' marketing_notifications ' => false , ' message_notification ' => true ]]);
$ v -> rules ([
' array ' => [
[ ' user_notifications ' ]
]
]);
$ v -> validate ();
length
ルールは、フィールドが指定された長さであるかどうか、およびフィールドが有効な文字列であるかどうかをチェックします。
$ v -> rule ( ' length ' , ' username ' , 10 );
代替構文。
$ v = new Valitron Validator ([ ' username ' => ' bobburgers ' ]);
$ v -> rules ([
' length ' => [
[ ' username ' , 10 ]
]
]);
$ v -> validate ();
lengthBetween
ルールは、フィールドが指定された長さの接線の間にあるかどうか、およびフィールドが有効な文字列であるかどうかをチェックします。
$ v -> rule ( ' lengthBetween ' , ' username ' , 1 , 10 );
代替構文。
$ v = new Valitron Validator ([ ' username ' => ' bobburgers ' ]);
$ v -> rules ([
' lengthBetween ' => [
[ ' username ' , 1 , 10 ]
]
]);
$ v -> validate ();
lengthMin
ルールは、フィールドが少なくとも指定された長さであるかどうか、およびフィールドが有効な文字列であるかどうかをチェックします。
$ v -> rule ( ' lengthMin ' , ' username ' , 5 );
代替構文。
$ v = new Valitron Validator ([ ' username ' => ' martha ' ]);
$ v -> rules ([
' lengthMin ' => [
[ ' username ' , 5 ]
]
]);
$ v -> validate ();
lengthMax
ルールは、フィールドが指定された長さ以下であるかどうか、およびフィールドが有効な文字列であるかどうかをチェックします。
$ v -> rule ( ' lengthMax ' , ' username ' , 10 );
代替構文。
$ v = new Valitron Validator ([ ' username ' => ' bruins91 ' ]);
$ v -> rules ([
' lengthMax ' => [
[ ' username ' , 10 ]
]
]);
$ v -> validate ();
min
ルールは、フィールドが少なくとも指定された値であるかどうか、および指定された値が数値であるかどうかをチェックします。
$ v -> rule ( ' min ' , ' age ' , 18 );
代替構文。
$ v = new Valitron Validator ([ ' age ' => 28 ]);
$ v -> rules ([
' min ' => [
[ ' age ' , 18 ]
]
]);
$ v -> validate ();
max
ルールは、フィールドが指定された値以下であるかどうか、および指定された値が数値であるかどうかをチェックします。
$ v -> rule ( ' max ' , ' age ' , 12 );
代替構文。
$ v = new Valitron Validator ([ ' age ' => 10 ]);
$ v -> rules ([
' max ' => [
[ ' age ' , 12 ]
]
]);
$ v -> validate ();
listContains
ルールは、フィールドが指定された値の配列に存在するかどうかをチェックします。
$ v -> rule ( ' listContains ' , ' color ' , ' yellow ' );
代替構文。
$ v = new Valitron Validator ([ ' color ' => [ ' blue ' , ' green ' , ' red ' , ' yellow ' ]]);
$ v -> rules ([
' listContains ' => [
[ ' color ' , ' yellow ' ]
]
]);
$ v -> validate ();
in
ルールは、フィールドが指定された値の配列に存在するかどうかをチェックします。
$ v -> rule ( ' in ' , ' color ' , [ ' blue ' , ' green ' , ' red ' , ' purple ' ]);
代替構文。
$ v = new Valitron Validator ([ ' color ' => ' purple ' ]);
$ v -> rules ([
' in ' => [
[ ' color ' , [ ' blue ' , ' green ' , ' red ' , ' purple ' ]]
]
]);
$ v -> validate ();
notIn
ルールは、フィールドが指定された値の配列に存在しないことをチェックします。
$ v -> rule ( ' notIn ' , ' color ' , [ ' blue ' , ' green ' , ' red ' , ' yellow ' ]);
代替構文。
$ v = new Valitron Validator ([ ' color ' => ' purple ' ]);
$ v -> rules ([
' notIn ' => [
[ ' color ' , [ ' blue ' , ' green ' , ' red ' , ' yellow ' ]]
]
]);
$ v -> validate ();
ip
ルールは、フィールドが有効な IP アドレスであることをチェックします。これには、IPv4、IPv6、プライベート、および予約された範囲が含まれます。
$ v -> rule ( ' ip ' , ' user_ip ' );
代替構文。
$ v = new Valitron Validator ([ ' user_ip ' => ' 127.0.0.1 ' ]);
$ v -> rules ([
' ip ' => [
[ ' user_ip ' ]
]
]);
$ v -> validate ();
ipv4
ルールは、フィールドが有効な IPv4 アドレスであることをチェックします。
$ v -> rule ( ' ipv4 ' , ' user_ip ' );
代替構文。
$ v = new Valitron Validator ([ ' user_ip ' => ' 127.0.0.1 ' ]);
$ v -> rules ([
' ipv4 ' => [
[ ' user_ip ' ]
]
]);
$ v -> validate ();
ipv6
ルールは、フィールドが有効な IPv6 アドレスであることをチェックします。
$ v -> rule ( ' ipv6 ' , ' user_ip ' );
代替構文。
$ v = new Valitron Validator ([ ' user_ip ' => ' 0:0:0:0:0:0:0:1 ' ]);
$ v -> rules ([
' ipv6 ' => [
[ ' user_ip ' ]
]
]);
$ v -> validate ();
email
ルールは、フィールドが有効な電子メール アドレスであることを確認します。
$ v -> rule ( ' email ' , ' user_email ' );
代替構文。
$ v = new Valitron Validator ([ ' user_email ' => ' [email protected] ' ]);
$ v -> rules ([
' email ' => [
[ ' user_email ' ]
]
]);
$ v -> validate ();
emailDNS
ルールは、フィールドがアクティブな DNS レコードまたは任意のタイプを持つ有効な電子メール アドレスであることを検証します。
$ v -> rule ( ' emailDNS ' , ' user_email ' );
代替構文。
$ v = new Valitron Validator ([ ' user_email ' => ' [email protected] ' ]);
$ v -> rules ([
' emailDNS ' => [
[ ' user_email ' ]
]
]);
$ v -> validate ();
url
ルールは、フィールドが有効な URL であることを確認します。
$ v -> rule ( ' url ' , ' website ' );
代替構文。
$ v = new Valitron Validator ([ ' website ' => ' https://example.com/contact ' ]);
$ v -> rules ([
' url ' => [
[ ' website ' ]
]
]);
$ v -> validate ();
urlActive
ルールは、フィールドがアクティブな A、AAAA、または CNAME レコードを持つ有効な URL であることを確認します。
$ v -> rule ( ' urlActive ' , ' website ' );
代替構文。
$ v = new Valitron Validator ([ ' website ' => ' https://example.com/contact ' ]);
$ v -> rules ([
' urlActive ' => [
[ ' website ' ]
]
]);
$ v -> validate ();
alpha
ルールは、フィールドがアルファベット文字のみであることをチェックします。
$ v -> rule ( ' alpha ' , ' username ' );
代替構文。
$ v = new Valitron Validator ([ ' username ' => ' batman ' ]);
$ v -> rules ([
' alpha ' => [
[ ' username ' ]
]
]);
$ v -> validate ();
alphaNum
ルールは、フィールドに英字または数字のみが含まれていることをチェックします。
$ v -> rule ( ' alphaNum ' , ' username ' );
代替構文。
$ v = new Valitron Validator ([ ' username ' => ' batman123 ' ]);
$ v -> rules ([
' alphaNum ' => [
[ ' username ' ]
]
]);
$ v -> validate ();
ascii
ルールは、フィールドに ASCII 文字セット内の文字のみが含まれていることをチェックします。
$ v -> rule ( ' ascii ' , ' username ' );
代替構文。
$ v = new Valitron Validator ([ ' username ' => ' batman123 ' ]);
$ v -> rules ([
' ascii ' => [
[ ' username ' ]
]
]);
$ v -> validate ();
slug
ルールは、フィールドに URL スラッグ文字 (a ~ z、0 ~ 9、-、_) のみが含まれていることをチェックします。
$ v -> rule ( ' slug ' , ' username ' );
代替構文。
$ v = new Valitron Validator ([ ' username ' => ' L337-H4ckZ0rz_123 ' ]);
$ v -> rules ([
' slug ' => [
[ ' username ' ]
]
]);
$ v -> validate ();
regex
ルールにより、フィールドが指定された正規表現パターンに一致することが保証されます。 (この正規表現は、文字列が 5 ~ 10 文字の英数字であることをチェックします)。
$ v -> rule ( ' regex ' , ' username ' , ' /^[a-zA-Z0-9]{5,10}$/ ' );
代替構文。
$ v = new Valitron Validator ([ ' username ' => ' Batman123 ' ]);
$ v -> rules ([
' regex ' => [
[ ' username ' , ' /^[a-zA-Z0-9]{5,10}$/ ' ]
]
]);
$ v -> validate ();
date
ルールは、指定されたフィールドが有効な DateTime オブジェクトであるかどうか、または文字列が strtotime() を介して UNIX タイムスタンプに変換できるかどうかをチェックします。
$ v -> rule ( ' date ' , ' created_at ' );
代替構文。
$ v = new Valitron Validator ([ ' created_at ' => ' 2018-10-13 ' ]);
$ v -> rules ([
' date ' => [
[ ' created_at ' ]
]
]);
$ v -> validate ();
dateFormat
ルールは、指定されたフィールドが指定された日付形式の有効な日付であることをチェックします。
$ v -> rule ( ' dateFormat ' , ' created_at ' , ' Y-m-d ' );
代替構文。
$ v = new Valitron Validator ([ ' created_at ' => ' 2018-10-13 ' ]);
$ v -> rules ([
' dateFormat ' => [
[ ' created_at ' , ' Y-m-d ' ]
]
]);
$ v -> validate ();
dateBefore
ルールは、指定されたフィールドが指定された日付より前の有効な日付であることを確認します。
$ v -> rule ( ' dateBefore ' , ' created_at ' , ' 2018-10-13 ' );
代替構文。
$ v = new Valitron Validator ([ ' created_at ' => ' 2018-09-01 ' ]);
$ v -> rules ([
' dateBefore ' => [
[ ' created_at ' , ' 2018-10-13 ' ]
]
]);
$ v -> validate ();
dateAfter
ルールは、指定されたフィールドが指定された日付以降の有効な日付であることを確認します。
$ v -> rule ( ' dateAfter ' , ' created_at ' , ' 2018-10-13 ' );
代替構文。
$ v = new Valitron Validator ([ ' created_at ' => ' 2018-09-01 ' ]);
$ v -> rules ([
' dateAfter ' => [
[ ' created_at ' , ' 2018-01-01 ' ]
]
]);
$ v -> validate ();
contains
ルールは、指定された文字列がフィールド内に存在することを確認し、フィールドと検索値が両方とも有効な文字列であることを確認します。
$ v -> rule ( ' contains ' , ' username ' , ' man ' );
代替構文。
$ v = new Valitron Validator ([ ' username ' => ' Batman123 ' ]);
$ v -> rules ([
' contains ' => [
[ ' username ' , ' man ' ]
]
]);
$ v -> validate ();
注オプションの strict フラグを使用すると、大文字と小文字を区別した一致を保証できます。次の例は true を返します。
$ v = new Valitron Validator ([ ' username ' => ' Batman123 ' ]);
$ v -> rules ([
' contains ' => [
[ ' username ' , ' man ' ]
]
]);
$ v -> validate ();
一方、指定された値では検索文字列の M が大文字ではないため、これは false を返します。
$ v = new Valitron Validator ([ ' username ' => ' Batman123 ' ]);
$ v -> rules ([
' contains ' => [
[ ' username ' , ' Man ' , true ]
]
]);
$ v -> validate ();
subset
ルールは、フィールドがスカラー フィールドまたは配列フィールドのいずれかであること、およびそのすべての値が指定された値のセット内に含まれていることをチェックします。
$ v -> rule ( ' subset ' , ' colors ' , [ ' green ' , ' blue ' , ' orange ' ]);
代替構文。
$ v = new Valitron Validator ([ ' colors ' => [ ' green ' , ' blue ' ]]);
$ v -> rules ([
' subset ' => [
[ ' colors ' , [ ' orange ' , ' green ' , ' blue ' , ' red ' ]]
]
]);
$ v -> validate ();
この例では、指定された色である紫が、提供している受け入れられる値の配列に存在しないため、false を返します。
$ v = new Valitron Validator ([ ' colors ' => [ ' purple ' , ' blue ' ]]);
$ v -> rules ([
' subset ' => [
[ ' colors ' , [ ' orange ' , ' green ' , ' blue ' , ' red ' ]]
]
]);
$ v -> validate ();
containsUnique
ルールは、指定されたフィールドが配列であること、およびその中に含まれるすべての値が一意であること、つまり配列内に重複した値がないことをチェックします。
$ v -> rule ( ' containsUnique ' , ' colors ' );
代替構文。
$ v = new Valitron Validator ([ ' colors ' => [ ' purple ' , ' blue ' ]]);
$ v -> rules ([
' containsUnique ' => [
[ ' colors ' ]
]
]);
$ v -> validate ();
この例では、指定された配列内の値が重複しているため、false が返されます。
$ v = new Valitron Validator ([ ' colors ' => [ ' purple ' , ' purple ' ]]);
$ v -> rules ([
' containsUnique ' => [
[ ' colors ' ]
]
]);
$ v -> validate ();
クレジット カード検証では現在、Visa visa
、Mastercard mastercard
、Dinersclub dinersclub
、American Express amex
、または Discover discover
検証できます。
これにより、各カードの種類に対してクレジット カードがチェックされます
$ v -> rule ( ' creditCard ' , ' credit_card ' );
必要に応じてカード タイプをフィルタするには、次のパラメータとして配列にスラッグを追加します。
$ v -> rule ( ' creditCard ' , ' credit_card ' , [ ' visa ' , ' mastercard ' ]);
1 種類のカードのみを検証したい場合は、それを文字列として入力します。
$ v -> rule ( ' creditCard ' , ' credit_card ' , ' visa ' );
カード タイプ情報がクライアントから取得されている場合は、有効なカード タイプの配列を指定することもできます。
$ cardType = ' amex ' ;
$ v -> rule ( ' creditCard ' , ' credit_card ' , $ cardType , [ ' visa ' , ' mastercard ' ]);
$ v -> validate (); // false
instanceOf
ルールは、フィールドが指定されたクラスのインスタンスであることをチェックします。
$ v -> rule ( ' instanceOf ' , ' date ' , DateTime);
代替構文。
$ v = new Valitron Validator ([ ' date ' => new DateTime ()]);
$ v -> rules ([
' instanceOf ' => [
[ ' date ' , ' DateTime ' ]
]
]);
$ v -> validate ();
注 文字列クラス名ではなく、指定されたオブジェクトと値を比較することもできます。この例でも true が返されます。
$ v = new Valitron Validator ([ ' date ' => new DateTime ()]);
$ existingDateObject = new DateTime ();
$ v -> rules ([
' instanceOf ' => [
[ ' date ' , $ existingDateObject ]
]
]);
$ v -> validate ();
optional
ルールにより、フィールドがデータ セット内に存在する場合、そのフィールドがすべての検証ルールに合格することが保証されます。
$ v -> rule ( ' optional ' , ' username ' );
代替構文。この例は、「username」フィールドが存在しない場合、またはユーザー名が英字のみの場合に true を返します。
$ v = new Valitron Validator ([ ' username ' => ' batman ' ]);
$ v -> rules ([
' alpha ' => [
[ ' username ' ]
],
' optional ' => [
[ ' username ' ]
]
]);
$ v -> validate ();
この例では、フィールドはオプションですが、すべての検証ルールを通過する必要があると規定されているため、false が返されますが、この場合は通過しません。
$ v = new Valitron Validator ([ ' username ' => ' batman123 ' ]);
$ v -> rules ([
' alpha ' => [
[ ' username ' ]
],
' optional ' => [
[ ' username ' ]
]
]);
$ v -> validate ();
arrayHasKeys
ルールは、フィールドが配列であること、および指定されたキーがすべて含まれていることを保証します。フィールドが配列でない場合、必要なキーが指定されていない場合、または一部のキーが欠落している場合は false を返します。
$ v = new Valitron Validator ([
' address ' => [
' name ' => ' Jane Doe ' ,
' street ' => ' Doe Square ' ,
' city ' => ' Doe D.C. '
]
]);
$ v -> rule ( ' arrayHasKeys ' , ' address ' , [ ' name ' , ' street ' , ' city ' ]);
$ v -> validate ();
独自の検証ルールを追加するには、ルール名、カスタム コールバックまたはクロージャ、およびエラーの場合に表示するエラー メッセージを指定してaddRule
メソッドを使用します。提供されたコールバックはブール値の true または false を返す必要があります。
Valitron Validator:: addRule ( ' alwaysFail ' , function ( $ field , $ value , array $ params , array $ fields ) {
return false ;
}, ' Everything you do is wrong. You fail. ' );
指定したフィールドにのみ有効な 1 回限りのルールを使用することもできます。
$ v = new Valitron Validator ( array ( " foo " => " bar " ));
$ v -> rule ( function ( $ field , $ value , $ params , $ fields ) {
return true ;
}, " foo " )-> message ( " {field} failed... " );
このようなルールは、 Validator
存在するスコープ内で定義された変数にアクセスできるため、これは便利です。クロージャの署名はValidator::addRule
コールバックの署名と同一です。
静的ではない独自のルールを追加する場合 (つまり、ルールが静的ではなく、 Validator
インスタンスを呼び出すことができる場合)、 Validator::addInstanceRule
使用する必要があります。このルールはValidator::addRule
と同じパラメータを受け取りますが、 Validator
インスタンスで呼び出す必要があります。
次の構文を使用して、複数のルールを連結できます。
$ v = new Valitron Validator ([ ' email_address ' => ' [email protected] ' ]);
$ v -> rule ( ' required ' , ' email_address ' )-> rule ( ' email ' , ' email_address ' );
$ v -> validate ();
ルールの数が増えると、複数のルールを一度に定義するための代替構文を使用することをお勧めします。
$ rules = [
' required ' => ' foo ' ,
' accepted ' => ' bar ' ,
' integer ' => ' bar '
];
$ v = new Valitron Validator ( array ( ' foo ' => ' bar ' , ' bar ' => 1 ));
$ v -> rules ( $ rules );
$ v -> validate ();
ルールに複数のパラメーター、または文字列より複雑な単一パラメーターが必要な場合は、ルールを配列でラップする必要があります。
$ rules = [
' required ' => [
[ ' foo ' ],
[ ' bar ' ]
],
' length ' => [
[ ' foo ' , 3 ]
]
];
ルール タイプごとに複数のルールを指定することもできます。
$ rules = [
' length ' => [
[ ' foo ' , 5 ],
[ ' bar ' , 5 ]
]
];
これらの手法を組み合わせると、比較的コンパクトなデータ構造で完全なルール定義を作成できます。
配列を介してルール定義を指定した後でも、 rule
メソッドを使用して個々のルールを追加し続けることができます。これは、カスタム検証ルールを定義する場合に特に便利です。
$ rules = [
' required ' => ' foo ' ,
' accepted ' => ' bar ' ,
' integer ' => ' bar '
];
$ v = new Valitron Validator ( array ( ' foo ' => ' bar ' , ' bar ' => 1 ));
$ v -> rules ( $ rules );
$ v -> rule ( ' min ' , ' bar ' , 0 );
$ v -> validate ();
フィールドごとにルールを追加することもできます。
$ rules = [
' required ' ,
[ ' lengthMin ' , 4 ]
];
$ v = new Valitron Validator ( array ( ' foo ' => ' bar ' ));
$ v -> mapFieldRules ( ' foo ' , $ rules );
$ v -> validate ();
または、一度に複数のフィールドの場合:
$ rules = [
' foo ' => [ ' required ' , ' integer ' ],
' bar ' =>[ ' email ' , [ ' lengthMin ' , 4 ]]
];
$ v = new Valitron Validator(array( ' foo ' => ' bar ' , ' bar ' => '[email protected]));
$v->mapFieldsRules($rules);
$v->validate();
これは 2 つの異なる方法で行うことができます。個別のラベルをルールに追加することも、ルールのすべてのラベルの配列に追加することもできます。
ルールに個々のラベルを追加するには、ルールの後にlabel
メソッドを追加するだけです。
$ v = new Valitron Validator ( array ());
$ v -> rule ( ' required ' , ' name ' )-> message ( ' {field} is required ' )-> label ( ' Name ' );
$ v -> validate ();
この方法には特殊なケースがあり、ルール定義でフィールド名の配列を使用できないため、フィールドごとに 1 つのルールが必要になります。したがって、これは機能しません:
$ v = new Valitron Validator ( array ());
$ v -> rule ( ' required ' , array ( ' name ' , ' email ' ))-> message ( ' {field} is required ' )-> label ( ' Name ' );
$ v -> validate ();
ただし、ラベルの配列を使用して、代わりにlabels
メソッドを追加するだけでこの問題を解決できます。
$ v = new Valitron Validator ( array ());
$ v -> rule ( ' required ' , array ( ' name ' , ' email ' ))-> message ( ' {field} is required ' );
$ v -> labels ( array (
' name ' => ' Name ' ,
' email ' => ' Email address '
));
$ v -> validate ();
これにより、エラー言語ファイルに{field}
のような新しいタグのセットが導入されます。equals のようequals
ルールを使用している場合は、フィールドを{field1}
のような値でインクリメントすることで、言語ファイルの 2 番目の値にアクセスできます。
withData メソッドを使用すると、検証ルールを再利用して、同じルールで異なるデータを迅速に検証できます。
$ v = new Valitron Validator ( array ());
$ v -> rule ( ' required ' , ' name ' )-> message ( ' {field} is required ' );
$ v -> validate (); //false
$ v2 = $ v -> withData ( array ( ' name ' => ' example ' ));
$ v2 -> validate (); //true
テスト スイートは、Composer オートローダーに依存して Valitron ファイルをロードして実行します。テストを実行する前に、Composer をダウンロードしてインストールしていることを確認してください。
curl -s http://getcomposer.org/installer | php
php composer.phar install
phpunit
実行するgit checkout -b my-new-feature
)phpunit
)git commit -am 'Added some feature'
)git push origin my-new-feature
)セキュリティの脆弱性を報告するには、Tidelift のセキュリティ連絡先を使用してください。 Tidelift が修正と公開を調整します。