あなたが必要とする最後の検証ライブラリです。
インストール
mightyについて
クイックスタート
mVEL
例
制約
検証
ドキュメント
仕様
変更履歴
このプロジェクトが気に入って開発をサポートしたい場合は、 を与えていただければ幸いです。
強力なデモ" style="max-width: 100%;">
composer require marwanalsoltany/ mighty
検証は、どの Web アプリケーションでも共通のタスクです。フォーム経由でアプリケーションに渡されるデータ (またはその他の種類の入力) は、常に一連のルールに照らして検証される必要があります。 mighty簡単かつ表現力豊かな方法で処理できます。
mightyは高速、強力、堅牢で使いやすい検証ライブラリであり、楽しく作業でき、あらゆるデータの検証を簡単にします。 mighty検証式言語 (mVEL)のおかげで、これまでに見たものとは異なります。その検証アプローチと250 を超える組み込みルールにより、非常に表現力豊かでコンパクトな方法で検証できないものはほとんどありません。簡単に言えば、 mightyはステロイドの検証です。これは実際に必要となる最後の検証ライブラリです。
mightyデータを検証するためのいくつかの異なるアプローチを提供します。最も一般的な使用例は、HTTP リクエストを介して受信データを検証することですが、もちろんこれに限定されません。 mighty 、モデルやあらゆる種類のオブジェクトを簡単に検証するための制約の形式で属性も提供します。
mighty単一のルールとして適用したり、演算子を使用してルールを相互に組み合わせてさらに複雑な検証を構築したりできる、さまざまな便利な検証ルールが含まれています。
mightyの強力な検証機能について学ぶために、本題に進み、いくつかの例を見てみましょう。
Validator::class
使用してフォーム データを検証する:
use MAKS mighty Validator ;
$ validator = new Validator ();
$ validator
-> setData ([
' name ' => ' John Doe ' ,
' username ' => ' john.doe ' ,
' password ' => ' Super@Secret#123 ' ,
' email ' => ' [email protected] ' ,
' hobbies ' => [ ' coding ' , ' design ' , ' sports ' ],
])
-> setValidations ([
// required&string&between:3,255
' name ' => $ validator -> validation ()-> required ()-> string ()-> between ( 3 , 255 ),
// required&string&matches:/[a-z0-9._-]/i
' username ' => $ validator -> validation ()-> required ()-> string ()-> matches ( ' /[a-z0-9._-]/i ' ),
// required&string&min:8
' password ' => $ validator -> validation ()-> required ()-> string ()-> min ( 8 ),
// required&email
' email ' => $ validator -> validation ()-> required ()-> email (),
// null^(required&array&max:5)
' hobbies ' => $ validator
-> validation ()
-> null ()
-> xor ()
-> group ( fn ( $ validation ) => $ validation
-> array ()
-> max ( 5 )
),
// null|(if:${hobbies.validations.array}&(string&min:3))
// hobby can be null or a string with at least 3 characters if hobbies is an array
' hobbies.* ' => $ validator
-> validation ()
-> null ()
-> or ()
-> group ( fn ( $ validation ) => $ validation
-> if ( ' ${hobbies.validations.array} ' )
-> open ()
-> string ()
-> min ( 3 )
-> close ()
),
])
-> validate ();
$ result = $ validator -> isOK (); // boolean result of the overall validation result
$ errors = $ validator -> getErrors (); // an array of results of validations that failed
$ results = $ validator -> getResults (); // an array of results of all validations
$ validator -> check (); // void or throws an exception with a nicely formatted message of what exactly went wrong
Constraint::class
属性を使用してオブジェクトの状態を検証します。
use MAKS mighty Validation Strategy ;
use MAKS mighty Validation Behavior ;
use MAKS mighty Validation Operator ;
use MAKS mighty Validation Constraint ;
use MAKS mighty Validation Constraint as Assert ;
use MAKS mighty Validation Constraint ValidatableObjectInterface ;
use MAKS mighty Validation Constraint ValidatableObjectTrait ;
class ValidatableObject implements ValidatableObjectInterface
{
use ValidatableObjectTrait;
#[ Assert Rule Equals( ' CONST ' )]
public const CONST = ' CONST ' ;
#[ Assert Rule In([ ' STATIC ' , ' VAR ' ])]
public static $ static = ' VAR ' ;
#[ Assert Rule StringConstraint]
#[ Assert Rule StringCharset( ' UTF-8 ' )]
#[ Assert Rule Between( 3 , 99 )]
public $ default = ' DEFAULT ' ;
#[ Assert Rule StringConstraint]
#[ Assert Rule StringContains( ' <element> ' )]
#[ Assert Rule Xml]
public $ xml = ' <?xml version="1.0"?><element></element> ' ;
#[ Assert Rule ArrayConstraint]
#[ Assert Shape([
' string ' => new Assert Rule Str ,
' array ' => new Assert Rule Arr ,
])]
public $ array = [
' string ' => ' value ' ,
' array ' => [],
];
#[ Assert Rule ObjectConstraint]
#[ Assert Rule ObjectIsInstanceOf(ValidatableObjectInterface::class)]
#[ Assert Valid(message: ' Not valid ' )]
public $ object ;
#[ Assert Callback( ' is_scalar ' , ' Data is not scalar ' )]
#[Constraint( ' string&min:3 ' , strategy: Strategy::FailLazy, messages: [
' string ' => ' Must be string. ' ,
' min ' => ' Must be longer than ${@arguments.0}. ' ,
])]
public function getDefault ()
{
return $ this -> default ;
}
#[ Assert Compound([
new Assert Rule Str ,
new Assert Compound ([
new Assert Rule Arr ,
new Assert Compound ([
new Assert Rule Blank ,
], Operator::Not),
], Operator::And),
], Operator::Xor, Behavior::Pessimistic, Strategy::FailLazy)]
public static function getStaticProperty ()
{
return static :: $ static ;
}
}
$ object = new ValidatableObject ();
$ result = $ object -> isValid (); // boolean result of the overall validation result
$ results = $ object -> validate (); // an array of results of all validations
$ object -> check (); // void or throws an exception with a nicely formatted message of what exactly went wrong
検証可能なオブジェクトを検証する出力の例は次のようになります。
// check out the previous snippet see the used constraints
$ object = new ValidatableObject ();
$ object -> object = new class implements ValidatableObjectInterface {
use ValidatableObjectTrait;
// some properties and their validation constraints ...
};
$ object -> default = null ; // this must be a string
$ object -> check ();
// ValidationFailedException::class
// Data failed to pass the validation.
// (01) The value (null) of the "ValidatableObject->default" property failed to pass the validation [string]. Problem: Value must be a string.
// (02) The value (null) of the "ValidatableObject->default" property failed to pass the validation [string.charset:"UTF-8"]. Problem: Value must be encoded in one of the following charsets: ["UTF-8"].
// (03) The value (null) of the "ValidatableObject->default" property failed to pass the validation [between:3,99]. Problem: Value must be between 3 and 99 or have a value/count/length that is between 3 and 99.
// (04) The return value (null) of the "ValidatableObject->getDefault()" method failed to pass the validation [callback]. Problem: Data is not scalar.
// (05) The return value (null) of the "ValidatableObject->getDefault()" method failed to pass the validation [string&min:3]. Problems: Must be string; Must be longer than 3.
ValidatableObject
とValidatableObjectChild
も確認してください。
ヒント:他の例は「例」セクションにあります。
mighty Validation Expression という概念があります。最も単純な形式の検証式は、指定されたデータをどのmighty検証するかを記述する単なる文字列です。これらの文字列は、 mighty検証式言語仕様 (mVEL) に基づいています。 mVEL は非常にシンプルで人間が判読可能で、扱いやすいです。これは、ブール代数、ビットごとの演算子、JSON、CSV などの確立された概念や仕様を組み合わせたものです。
したがって、検証式は、ブール代数ロジックを使用して評価されたときに検証の最終結果となる式を構築するビットごとの演算子で区切られたいくつかのルールを含む文字列として定義できます。ルールには引数を含めることができ、これらの引数の型はJSON型の同じルールを使用して表すことができます。ルールには複数の引数を指定することもでき、引数はカンマ ( CSV ) で区切られます。
たとえば、 required&string&between:2,255|null
は有効な検証式であり、この式は次のように理解できます。
required
入力が存在することをアサートします。string
入力が文字列であることをアサートします。between:2,255
入力が 2 ~ 255 の間の長さの文字列であることをアサートします。null
入力が null であることをアサートします。 required&string&between:2,255|null
式は、入力が存在する必要があることを意味します。文字列型のAND 。かつ、長さが 2 ~ 255 であること。またはヌル。したがって、これは null 許容文字列であり、null ではない場合は 2 ~ 255 文字の長さでなければなりません。
入力が" mighty is Awesome!"
だったとしましょう。 、その入力に対する式required&string&between:2,255|null
の結果は1&1&1|0
となり、結果は1
になります。これはtrue
です。入力がnull
の場合、結果は 0&0&0|1 = 1 となり、入力がX
の場合、結果は0&0&0|1
= 1
になります。 0&0&0|0
= 0
などになります...
他の検証実装とは異なり、ビットごとの演算子を使用したブール代数の概念により、ルールを最小限に抑えながら、非常に読みやすくコンパクトな複雑な検証を構築でき、既存のロジックを逆または複合的な方法で再利用し、最終的にはコードベースは可能な限り DRY です。利点は次の点に要約できます。
~
を使用して)、通常とはまったく逆のことを実行することはできません。&
を使用)、 OR演算 ( |
を使用)、またはXOR演算 ( ^
を使用) の結果である場合があります。(
) を使用、およびCLOSE ( )
を使用) です。?
プレフィックス)。!
プレフィックス) の後にルールの実行を停止します。[macro]
構文を使用して実行することで、可読性を向上させることができます。また、 JSONの概念により、引数のデータ型の安全性が保証され、 CSVの概念により、引数リストに明確な解析ルールが含まれることが保証されます。
最も良い点は、すべてのルールや検証式言語の構文を覚える必要がないことです。 Validation
クラスは、Validation Expression の構築に使用できる流暢なインターフェイスです。利用可能なすべてのmightyルールを認識しており、IDE-Intellisense を完全にサポートしているため、これをできるだけ簡単に行うことができます。例えば:
use MAKS mighty Validation ;
// the validation expression: `required&string&between:2,255|null`
// can be constructed using the Validation::class as follows:
$ validation = ( new Validation ())-> required ()-> string ()-> between ( 2 , 255 )-> or ()-> null (); // AND is the default operator
// or statically:
$ validation = Validation:: required ()-> string ()-> between ( 2 , 255 )-> or ()-> null ();
事実:通常、検証式が何を行うかを説明するには、検証式自体よりも多くの単語が必要です。
現実世界のシナリオの例をいくつか示します。
use MAKS mighty Validator ;
$ result = ( $ validator = new Validator ())
-> validateOne (
' 123 ' ,
$ validator
-> validation ()
// can be an integer or float or a string that is numeric
// this example is only for demonstration only,
// the same result can be achieved using numeric() only
-> integer ()-> or ()-> float ()-> or ()-> group (
fn ( $ validation ) => $ validation -> string ()-> and ()-> numeric ()
)
)
-> toArray ();
// $result would look something like this:
[
' value ' => ' 123 ' ,
' result ' => true ,
' validations ' => [
' integer ' => false ,
' float ' => false ,
' string ' => true ,
' numeric ' => true ,
],
' errors ' => [],
' metadata ' => [
' basis ' => ' integer|float|(string&numeric) ' ,
' rules ' => ' integer|float|(string&numeric) ' ,
' expression ' => ' 0|0|(1&1) ' ,
],
];
// you can also simply use the static helper Validator::validateData($data, $validation);
use MAKS mighty Validator ;
use App Service HaveIBeenPwnedService as PasswordService ;
$ validator = new Validator ();
$ data = [
' name ' => ' John Doe ' ,
' age ' => 32 ,
' email ' => ' [email protected] ' ,
' username ' => ' john.doe ' ,
' password ' => ' Secret@123 ' ,
' image ' => ' /path/to/image.png ' ,
' submission ' => ' now ' ,
' consent ' => ' yes ' ,
' data ' => [
' nickname ' => ' JOE ' ,
' number ' => 7 ,
' hobbies ' => [
' coding ' ,
' cooking ' ,
' reading ' ,
]
],
];
$ validations = [
' name ' => $ validator -> validation ()-> required ()-> string ()-> stringCharset ([ ' UTF-8 ' , ' ASCII ' ])-> pessimistic (),
// or using mVEL => required&string&string.charset:'["UTF-8","ASCII"]'
' age ' => $ validator -> validation ()-> required ()-> integer ()-> min ( 18 ),
// or using mVEL => required&integer&min:18
' email ' => $ validator -> validation ()-> required ()-> email ()-> macro ( ' gmail ' ),
// or using mVEL => required&email&[gmail]
' username ' => $ validator -> validation ()-> required ()-> username (),
// or using mVEL => required&username
' password ' => $ validator -> validation ()-> required ()-> password ()-> callback ( fn ( $ input ) => !PasswordService:: isPwned ( $ input )),
// or using mVEL => required&password (NOTE: callback ist not possible, it requires a Validation::class instance that is bound to the Validator::class instance)
' image ' => $ validator -> validation ()-> null ()-> xor ()-> group ( fn () => $ this -> image ()-> imageDimensions ( 1920 , 1080 , ' <= ' )),
// or using mVEL => null^(image&image.dimensions:1920,1080,"<=")
' submission ' => $ validator -> validation ()-> required ()-> datetime ()-> datetimeLt ( ' 2022-12-07 ' ),
// or using mVEL => required&datetime&datetime.lt:"2022-12-07"
' consent ' => $ validator -> validation ()-> assert ( ' ${age.value} ' , 18 , ' >= ' )-> or ()-> accepted ()-> or ()-> assertEquals ( ' ${this} ' , ' granted ' )-> optimistic (),
// or using mVEL => ?assert:${age.value},18,">="|accepted|assert.equals:${this},"granted"
' data ' => $ validator -> validation ()-> required ()-> array ()-> arrayHasKey ( ' nickname ' ),
// or using mVEL => required&array&array.hasKey:"nickname"
' data.* ' => $ validator -> validation ()-> scalar ()-> or ()-> array ()-> optimistic (),
// or using mVEL => ?scalar|array
' data.nickname ' => $ validator -> validation ()-> string ()-> min ( 2 )-> max ( 32 ),
// or using mVEL => string&min:2&max:32
' data.hobbies.* ' => $ validator -> validation ()-> ifEq ( ' ${data.hobbies.validations.array} ' , false )-> or ()-> group ( fn () => $ this -> string ()-> min ( 3 )),
// or using mVEL => if.eq:${data.hobbies.validations.array},false|(string&min:3)
];
$ labels = [
' name ' => ' Name ' ,
' age ' => ' Age ' ,
' email ' => ' E-Mail ' ,
' password ' => ' Password ' ,
' image ' => ' Image ' ,
' data ' => ' Data ' ,
' data.* ' => ' Value of data ' ,
' consent ' => ' Consent ' ,
];
$ messages = [
' * ' => [ // this will be expanded for all fields
' required ' => ' ${@label} is a required field. ' ,
],
' age ' => [
' min ' => ' ${@label} must be at least ${@arguments.0}. ' ,
],
' username ' => [
' matches ' => ' ${@label} must contain letters, numbers, and the following characters ".-_" only. ' ,
],
' consent ' => [
' assert ' => ' You must be at least ${@arguments.1} years old to submit this form. ' ,
]
];
$ validator
-> setData ( $ data )
-> setValidations ( $ validations )
-> setMessages ( $ messages )
-> setLabels ( $ labels )
-> validate ();
$ results = $ validator -> getResults ();
// $result should look something like this:
[
// this will actually be a Result object
// array syntax is used here for demonstration purposes
' name ' => [
' key ' => ' name ' ,
' value ' => ' John Doe ' ,
' result ' => true ,
' validations ' => [
' required ' => true ,
' string ' => true ,
' string.charset ' => true ,
],
' errors ' => [],
' metadata ' => [
' basis ' => ' !required&string&string.charset:["UTF-8","ASCII"] ' ,
' rules ' => ' required&string&string.charset:["UTF-8","ASCII"] ' ,
' expression ' => ' 1&1&1 ' ,
],
],
// other validations ...
];
// you can also simply use the static helper Validator::validateData($data, $validations);
ヒント: Validator::class
にメッセージ オーバーライドを提供する場合は、 RuleValidation::class
使用して配列キーを設定することをお勧めします。このクラスには、すべてのmighty組み込みルール名がクラス定数として含まれています。
バリデーターは 3 つの方法で拡張できます。
use MAKS mighty Validator ;
use MAKS mighty Rule ;
$ validator = new Validator ();
// adding a new rule
$ validator -> addRule (
( new Rule ())
-> name ( ' equals ' )
-> arguments ([ ' string ' ])
-> callback ( fn ( string $ input , mixed $ expected ): bool => $ input == $ expected )
-> parameters ([ ' @input ' , ' @arguments.0 ' ])
-> comparison ([ ' @output ' , ' === ' , true ])
-> example ( ' equals:value ' )
-> description ( ' Asserts that the input is equal to the given value. ' )
);
// adding a new rule alias
$ validator -> addRuleAlias ( ' eq ' , ' equals ' );
// adding a new rules macro
$ validator -> addRuleMacro ( ' gmail ' , ' string&email&matches:"/@gmail.com$/i" ' );
$ results = $ validator -> validateAll (
[
' name ' => ' John ' ,
' email ' => ' [email protected] ' ,
],
[
' name ' => ' eq:John ' ,
' email ' => ' required&[gmail] ' ,
]
);
// $results should look like this:
[
// items will actually be a Result object
// array syntax is used here for demonstration purposes
' name ' => [
' key ' => ' name ' ,
' value ' => ' John ' ,
' result ' => true ,
' validations ' => [
' eq ' => true ,
],
' errors ' => [],
' metadata ' => [
' basis ' => ' eq:John ' ,
' rules ' => ' eq:John ' ,
' expression ' => ' 1 ' ,
],
],
' email ' => [
' key ' => ' email ' ,
' value ' => ' [email protected] ' ,
' result ' => false ,
' validations ' => [
' required ' => true ,
' string ' => true ,
' email ' => true ,
' matches ' => false ,
],,
' errors ' => [],
' metadata ' => [
' basis ' => ' required&[gmail] ' ,
' rules ' => ' required&(string&email&matches:"/@gmail.com$/i") ' ,
' expression ' => ' 1&(1&1&0) ' ,
],
],
];
ヒント:他の例については、 Validator
デフォルトのrules
、 aliases
、およびmacros
確認してください。
mighty 、任意のデータやクラス、クラス定数、プロパティ、メソッドの値を検証するために使用できる 250 を超えるルール/属性で構成されています。
属性は 3 つの主要なグループに分割されます。
汎用制約属性はMAKS mighty Validation
名前空間の下にあります。
このグループは現在 1 つの属性のみで構成されています。それがConstraint
属性です。この属性は、適用されるデータを検証するための検証式を受け取ります。これは、他のすべての属性の基本クラスでもあります。
特別な制約属性はMAKS mighty ValidationConstraint
名前空間の下にあります。
このグループには、属性のコンテキストでのみ使用できる特定のジョブを実行する属性が含まれています。これは次の属性で構成されます。
Rule
: この属性は、単一の検証ルールを使用してデータを検証するために使用されます。これは、ルール制約属性グループ内のすべての属性の基本クラスでもあります。Callback
: この属性は、コールバック関数を使用してデータを検証するために使用されます。Valid
: この属性は、検証可能なオブジェクトの有効性を検証するために使用されます。Shape
: この属性は、配列またはオブジェクトの形状を検証するために使用されます。これは、単一の値ではなく値のセット (構造化データ) を検証する唯一の属性であることに注意してください。Compound
: この属性は、一連の制約を結合して検証式を構築するために使用されます。制約は任意の演算子を使用して組み合わせることができ、動作を持たせることもできます。これは、検証式を構築するためのオブジェクト指向の方法として機能します。 注: Shape::class
およびCompound::class
属性とともに使用できる制約は、 Constraint::class
、 Rule::class
、またはCompound::class
の実際のインスタンスである必要があることに注意してください。特別な制約属性グループのCallback::class
、 Valid::class
、またはShape::class
許可されません。この機能が必要な場合は、問題を開いてください。実装について話し合います。
ルール制約属性はMAKS mighty ValidationConstraintRule
名前空間の下にあります。
このグループには、単一の検証ルールに基づく属性が含まれています。これは、 mighty提供する属性のほとんどで構成されます。完全なリストについては、「検証」セクションを参照してください。
mightyは組み込み制約の膨大なリストがあり、 mighty提供するもの以外のものが必要になることはほとんどありません。それにもかかわらず、カスタム制約が必要になる場合があります。これを実現する方法は次のとおりです。
<?php
declare (strict_types= 1 );
namespace App Validation Constraint ;
use Attribute ;
use MAKS mighty Rule ;
use MAKS mighty Result ;
use MAKS mighty Validation Strategy ;
use MAKS mighty Validation Constraint ;
use MAKS mighty Validation Constraint ValidatesOne ;
// use the ValidatesMany interface if your Constraint returns a collection of Result objects
use MAKS mighty Validation Constraint ValidatesMany ;
#[Attribute(
Attribute:: TARGET_PROPERTY |
Attribute:: TARGET_METHOD
)]
class MyCustomConstraint extends Constraint implements ValidatesOne
{
public function __construct (
? string $ message = null ,
Strategy $ strategy = Strategy::FailFast,
) {
parent :: __construct (
validation: ' app.myCustomConstraint ' ,
messages: [ ' app.myCustomConstraint ' => $ message ],
strategy: $ strategy
);
}
public function validate ( mixed $ value = null ): Result
{
// it is really up to you, how you handle this
// you will just work with a normal mighty Validator
// here we're just preparing the data to pass to the Validator
$ name = '' ;
$ data = [ $ name => $ value ];
$ validations = [ $ name => $ this -> validation ];
$ messages = [ $ name => [ $ this -> validation => $ this -> messages [ $ this -> validation ] ?? null ]];
$ labels = [ $ name => static ::class];
// you can reuse the built-in rules or
// add you own Rule that handles your custom logic
$ result = $ this
-> getValidator ()
-> addRule (
// see MAKS mighty Rule for more info
( new Rule ())
-> setName ( ' app.myCustomConstraint ' )
-> setCallback ( static fn ( $ input ) => $ input /* here comes your logic */ )
-> setParameters ([ ' @input ' ]) // rule callback dependencies
-> setMessage ( ' ${@label} must follow my custom constraint validation. ' ) // this is the default message
)
-> setData ( $ data )
-> setValidations ( $ validations )
-> setMessages ( $ messages )
-> setLabels ( $ labels )
-> validate ();
return $ result [ $ name ]; // if you implement ValidatesMany, you will just return $result
}
}
注:カスタム制約は、特別な制約属性グループの一部とみなされます ( Shape::class
およびCompound::class
制約とともに、またはその内部で使用することはできません)
次の表は、同等の属性とメソッドを含む、使用可能なすべてのルールをリストしています。
Validation::class
Constraint::class
とConstraint/Rule/*
いいえ。 | ルール | 説明 | 属性/メソッド |
---|---|---|---|
001 | 名前: null 使用法: null | 入力が null であることをアサートします。 | 属性:NullConstraint::class 方法: Validation::null() |
002 | 名前: boolean 使用法: boolean | 入力がブール値であることをアサートします。 | 属性:Boolean::class 方法: Validation::boolean() |
003 | 名前: integer 使用法: integer | 入力が整数であることをアサートします。 | 属性:Integer::class 方法: Validation::integer() |
004 | 名前: float 使用法: float | 入力が浮動小数点であることをアサートします。 | 属性:FloatConstraint::class 方法: Validation::float() |
005 | 名前: numeric 使用法: numeric | 入力が数値であることをアサートします。 | 属性:NumericConstraint::class 方法: Validation::numeric() |
006 | 名前: string 使用法: string | 入力が文字列であることをアサートします。 | 属性:StringConstraint::class 方法: Validation::string() |
007 | 名前: scalar 使用法: scalar | 入力がスカラーであることをアサートします。 | 属性:Scalar::class 方法: Validation::scalar() |
008 | 名前: array 使用法: array | 入力が配列であることをアサートします。 | 属性:ArrayConstraint::class 方法: Validation::array() |
009 | 名前: object 使用法: object | 入力がオブジェクトであることをアサートします。 | 属性:ObjectConstraint::class 方法: Validation::object() |
010 | 名前: callable 使用法: callable | 入力が呼び出し可能であることをアサートします。 | 属性:CallableConstraint::class 方法: Validation::callable() |
011 | 名前: iterable 使用法: iterable | 入力が反復可能であることをアサートします。 | 属性:IterableConstraint::class 方法: Validation::iterable() |
012 | 名前: countable 使用法: countable | 入力が可算値であることをアサートします。 | 属性:Countable::class 方法: Validation::countable() |
013 | 名前: resource 使用法: resource | 入力がリソースであることをアサートします。 | 属性:ResourceConstraint::class 方法: Validation::resource() |
014 | 名前: type 使用法: type:'["int","float"]' | 入力が指定されたタイプのいずれかであることをアサートします。 | 属性:Type::class 方法: Validation::type(string|array $type) |
015 | 名前: type.debug 使用法: type.debug:string | get_debug_type() を使用して、入力が指定された型であることをアサートします。 | 属性:TypeDebug::class 方法: Validation::typeDebug(string $type) |
016 | 名前: alpha 使用法: alpha | 入力がアルファベット文字のみで構成されていることをアサートします。 | 属性:Alpha::class 方法: Validation::alpha() |
017 | 名前: alnum 使用法: alnum | 入力が英数字のみで構成されていることをアサートします。 | 属性:Alnum::class 方法: Validation::alnum() |
018 | 名前: lower 使用法: lower | 入力が小文字のみで構成されていることをアサートします。 | 属性:Lower::class 方法: Validation::lower() |
019 | 名前: upper 使用法: upper | 入力が大文字のみで構成されていることをアサートします。 | 属性:Upper::class 方法: Validation::upper() |
020 | 名前: cntrl 使用法: cntrl | 入力が制御文字のみで構成されていることをアサートします。 | 属性:Cntrl::class 方法: Validation::cntrl() |
021 | 名前: space 使用法: space | 入力が空白文字のみで構成されていることをアサートします。 | 属性:Space::class 方法: Validation::space() |
022 | 名前: punct 使用法: punct | 入力が句読点文字のみで構成されていることをアサートします。 | 属性:Punct::class 方法: Validation::punct() |
023 | 名前: graph 使用法: graph | 入力がグラフィック文字 (目に見える出力を作成する文字) のみで構成されていることをアサートします。 | 属性:Graph::class 方法: Validation::graph() |
024 | 名前: print 使用法: print | 入力が印刷可能な文字のみで構成されていることをアサートします。 | 属性:PrintConstraint::class 方法: Validation::print() |
025 | 名前: digit 使用法: digit | 入力が数字 (数字) のみで構成されていることをアサートします。 | 属性:Digit::class 方法: Validation::digit() |
026 | 名前: xdigit 使用法: xdigit | 入力が 16 進数を表すことをアサートします。 | 属性:Xdigit::class 方法: Validation::xdigit() |
027 | 名前: booleanLike 使用法: booleanLike | 入力がブール値として解析できる値であることをアサートします (TRUE: true、「true」、「1」、「on」、「yes」、FALSE: false、「false」、「0」、「off」) 、「いいえ」、「」、null)。 | 属性:BooleanLike::class 方法: Validation::booleanLike() |
028 | 名前: integerLike 使用法: integerLike:0,100 | 入力が、指定された範囲内の整数として解析できる値であることをアサートします。 | 属性:IntegerLike::class 方法: Validation::integerLike(int $min = PHP_INT_MIN, int $max = PHP_INT_MAX) |
029 | 名前: integerLike.allowOctal 使用法: integerLike.allowOctal:0,100 | 入力が、指定された範囲内の整数として解析でき、8 進数表記が可能な値であることをアサートします。 | 属性:IntegerLikeAllowOctal::class 方法: Validation::integerLikeAllowOctal(int $min = PHP_INT_MIN, int $max = PHP_INT_MAX) |
030 | 名前: integerLike.allowHex 使用法: integerLike.allowHex:0,100 | 入力が、指定された範囲内の整数として解析でき、16 進表記が可能な値であることをアサートします。 | 属性:IntegerLikeAllowHex::class 方法: Validation::integerLikeAllowHex(int $min = PHP_INT_MIN, int $max = PHP_INT_MAX) |
031 | 名前: floatLike 使用法: floatLike:1.0,100.0 | 入力が、指定された範囲内の浮動小数点として解析できる値であることをアサートします。 | 属性:FloatLike::class 方法: Validation::floatLike(float $min = PHP_FLOAT_MIN, float $max = PHP_FLOAT_MAX) |
032 | 名前: floatLike.allowThousands 使用法: floatLike.allowThousands:1.0,100.0 | 入力が、指定された範囲内の浮動小数点として解析できる値であることをアサートします。 | 属性:FloatLikeAllowThousands::class 方法: Validation::floatLikeAllowThousands(float $min = PHP_FLOAT_MIN, float $max = PHP_FLOAT_MAX) |
033 | 名前: regexp 使用法: regexp:"/[az]/i" | 入力が Perl 互換の正規表現に一致することをアサートします。 | 属性:Regexp::class 方法: Validation::regexp(string $pattern) |
034 | 名前: ip 使用法: ip | 入力が IP アドレスであることをアサートします。 | 属性:Ip::class 方法: Validation::ip() |
035 | 名前: ip.v4 使用法: ip.v4 | 入力が IPv4 アドレスであることをアサートします。 | 属性:IpV4::class 方法: Validation::ipV4() |
036 | 名前: ip.v6 使用法: ip.v6 | 入力が IPv6 アドレスであることをアサートします。 | 属性:IpV6::class 方法: Validation::ipV6() |
037 | 名前: ip.notReserved 使用法: ip.notReserved | 入力が予約された IP 範囲内にない IP アドレスであることをアサートします。 | 属性:IpNotReserved::class 方法: Validation::ipNotReserved() |
038 | 名前: ip.notPrivate 使用法: ip.notPrivate | 入力がプライベート IP 範囲内にない IP アドレスであることをアサートします。 | 属性:IpNotPrivate::class 方法: Validation::ipNotPrivate() |
039 | 名前: mac 使用法: mac | 入力が MAC アドレスであることをアサートします。 | 属性:Mac::class 方法: Validation::mac() |
040 | 名前: url 使用法: url | 入力が URL であることをアサートします。 | 属性:Url::class 方法: Validation::url() |
041 | 名前: url.withPath 使用法: url.withPath | 入力がパスを含む URL であることをアサートします。 | 属性:UrlWithPath::class 方法: Validation::urlWithPath() |
042 | 名前: url.withQuery 使用法: url.withQuery | 入力がクエリを含む URL であることをアサートします。 | 属性:UrlWithQuery::class 方法: Validation::urlWithQuery() |
043 | 名前: email 使用法: email | 入力が電子メール アドレスであることをアサートします。 | 属性:Email::class 方法: Validation::email() |
044 | 名前: email.withUnicode 使用法: email.withUnicode | 入力が電子メール アドレス (Unicode が許可される) であることをアサートします。 | 属性:EmailWithUnicode::class 方法: Validation::emailWithUnicode() |
045 | 名前: domain 使用法: domain | 入力がドメインであることをアサートします。 | 属性:Domain::class 方法: Validation::domain() |
046 | 名前: domain.isActive 使用法: domain.isActive | 入力がアクティブなドメインであることをアサートします。ドメインと電子メールで動作します。 | 属性:DomainIsActive::class 方法: Validation::domainIsActive() |
047 | 名前: file 用途: file | 入力がファイル (ファイル、リンク、ディレクトリのいずれか) であることをアサートします。 | 属性:File::class 方法: Validation::file() |
048 | 名前: file.isFile 使用法: file.isFile | 入力がファイルであることをアサートします。 | 属性:FileIsFile::class 方法: Validation::fileIsFile() |
049 | 名前: file.isLink 使用法: file.isLink | 入力がリンクであることをアサートします。 | 属性:FileIsLink::class 方法: Validation::fileIsLink() |
050 | 名前: file.isDirectory 使用法: file.isDirectory | 入力がディレクトリであることをアサートします。 | 属性:FileIsDirectory::class 方法: Validation::fileIsDirectory() |
051 | 名前: file.isExecutable 使用法: file.isExecutable | 入力がファイルであり、実行可能であることをアサートします。 | 属性:FileIsExecutable::class 方法: Validation::fileIsExecutable() |
052 | 名前: file.isWritable 使用法: file.isWritable | 入力がファイルであり、書き込み可能であることをアサートします。 | 属性:FileIsWritable::class 方法: Validation::fileIsWritable() |
053 | 名前: file.isReadable 使用法: file.isReadable | 入力がファイルであり、読み取り可能であることをアサートします。 | 属性:FileIsReadable::class 方法: Validation::fileIsReadable() |
054 | 名前: file.isUploaded 使用法: file.isUploaded | 入力が HTTP POST 経由でアップロードされたファイルであることをアサートします。 | 属性:FileIsUploaded::class 方法: Validation::fileIsUploaded() |
055 | 名前: file.size 使用法: file.size:1024 | 入力がファイルであり、サイズがバイト単位で指定されたサイズと等しいことをアサートします。 | 属性:FileSize::class 方法: Validation::fileSize(int $sizeInBytes) |
056 | 名前: file.size.lte 使用法: file.size.lte:1024 | 入力がファイルであり、サイズが指定されたサイズ (バイト単位) 以下であることをアサートします。 | 属性:FileSizeLte::class 方法: Validation::fileSizeLte(int $sizeInBytes) |
057 | 名前: file.size.gte 使用法: file.size.gte:1024 | 入力がファイルであり、サイズが指定されたサイズ (バイト単位) 以上であることをアサートします。 | 属性:FileSizeGte::class 方法: Validation::fileSizeGte(int $sizeInBytes) |
058 | 名前: file.dirname 名使用法: file.dirname:/path/to/dir | 入力がファイルであり、そのディレクトリ名が指定されたディレクトリ名と等しいことをアサートします。 | 属性:FileDirname::class 方法: Validation::fileDirname(string $dirname) |
059 | 名前: file.basename 名使用法: file.basename:file.ext | 入力がファイルであり、そのベース名が指定されたベース名と等しいことをアサートします。 | 属性:FileBasename::class 方法: Validation::fileBasename(string $basename) |
060 | 名前: file.filename 使用法: file.filename:file | 入力がファイルであり、そのファイル名が指定されたファイル名と等しいことをアサートします。 | 属性:FileFilename::class 方法: Validation::fileFilename(string $filename) |
061 | 名前: file.extension 使用法: file.extension:ext | 入力がファイルであり、その拡張子が指定された拡張子と等しいことをアサートします。 | 属性:FileExtension::class 方法: Validation::fileExtension(string $extension) |
062 | 名前: file.mime 使用法: file.mime:text/plain | 入力がファイルであり、その MIME タイプが指定された MIME タイプの 1 つであることをアサートします。 | 属性:FileMime::class 方法: Validation::fileMime(string|array $mine) |
063 | 名前: image 使用法: image | 入力が画像ファイル (jpg、jpeg、png、gif、bmp、svg、または webp) であることをアサートします。 | 属性:Image::class 方法: Validation::image() |
064 | 名前: image.width 使用法: image.width:1920 | 入力が画像であり、その幅がピクセル単位で指定された幅と等しいことをアサートします。 | 属性:ImageWidth::class 方法: Validation::imageWidth(int $width) |
065 | 名前: image.width.lte 使用法: image.width.lte:1920 | 入力が画像であり、その幅がピクセル単位で指定された幅以下であることをアサートします。 | 属性:ImageWidthLte::class 方法: Validation::imageWidthLte(int $width) |
066 | 名前: image.width.gte 使用法: image.width.gte:1920 | 入力が画像であり、その幅がピクセル単位で指定された幅以上であることをアサートします。 | 属性:ImageWidthGte::class 方法: Validation::imageWidthGte(int $width) |
067 | 名前: image.height 使用法: image.height:1080 | 入力が画像であり、その高さがピクセル単位で指定された高さに等しいことをアサートします。 | 属性:ImageHeight::class 方法: Validation::imageHeight(int $height) |
068 | 名前: image.height.lte 使用法: image.height.lte:1080 | 入力が画像であり、その高さがピクセル単位で指定された高さ以下であることをアサートします。 | 属性:ImageHeightLte::class 方法: Validation::imageHeightLte(int $height) |
069 | 名前: image.height.gte 使用法: image.height.gte:1080 | 入力が画像であり、その高さがピクセル単位で指定された高さ以上であることをアサートします。 | 属性:ImageHeightGte::class 方法: Validation::imageHeightGte(int $height) |
070 | 名前: image.dimensions 使用法: image.dimensions:1920,1080,== | 入力が画像であり、その寸法が指定された幅と高さ (ピクセル単位) より小さい、等しい、または大きいことをアサートします。 | 属性:ImageDimensions::class 方法: Validation::imageDimensions(int $width, int $height, string $operator = '==') |
071 | 名前: image.ratio 使用法: image.ratio:16:9 | 入力が画像であり、そのアスペクト比が指定された比率に等しいことをアサートします (比率は「16/9」のような分数で指定する必要があります)。 | 属性:ImageRatio::class 方法: Validation::imageRatio(string $ratio) |
072 | 名前: if 使用法: if:7,7,== | 第一引数と第二引数の間の条件をチェックします。条件演算子は第三引数として指定することもできます。 | 属性:IfConstraint::class 方法: Validation::if(mixed $actual, mixed $expected = true, string $operator = '==') |
073 | 名前: if.eq 使用法: if.eq:3,3 | 最初の引数と 2 番目の引数の間の条件をチェックします。条件演算子は「==」です。 | 属性:IfEq::class 方法: Validation::ifEq(mixed $actual, mixed $expected) |
074 | 名前: if.neq 使用法: if.neq:1,2 | 最初の引数と 2 番目の引数の間の条件をチェックします。条件演算子は「!=」です。 | 属性:IfNeq::class 方法: Validation::ifNeq(mixed $actual, mixed $expected) |
075 | 名前: if.id 使用法: if.id:3,3 | 最初の引数と 2 番目の引数の間の条件をチェックします。条件演算子は「===」です。 | 属性:IfId::class 方法: Validation::ifId(mixed $actual, mixed $expected) |
076 | 名前: if.nid 使用法: if.nid:1,2 | 最初の引数と 2 番目の引数の間の条件をチェックします。条件演算子は「!==」です。 | 属性:IfNid::class 方法: Validation::ifNid(mixed $actual, mixed $expected) |
077 | 名前: if.gt 使用法: if.gt:2,1 | 最初の引数と 2 番目の引数の間の条件をチェックします。条件演算子は「>」です。 | 属性:IfGt::class 方法: Validation::ifGt(mixed $actual, mixed $expected) |
078 | 名前: if.gte 使用法: if.gte:2,2 | 最初の引数と 2 番目の引数の間の条件をチェックします。条件演算子は ">= です。 | 属性:IfGte::class 方法: Validation::ifGte(mixed $actual, mixed $expected) |
079 | 名前: if.lt 使用法: if.lt:1,2 | 最初の引数と 2 番目の引数の間の条件をチェックします。条件演算子は「<」です。 | 属性:IfLt::class 方法: Validation::ifLt(mixed $actual, mixed $expected) |
080 | 名前: if.lte 使用法: if.lte:1,2 | 最初の引数と 2 番目の引数の間の条件をチェックします。条件演算子は「<=」です。 | 属性:IfLte::class 方法: Validation::ifLte(mixed $actual, mixed $expected) |
081 | 名前: empty 使用法: empty | empty() 言語構造を使用して入力が空であることをアサートします (空白、つまり空の文字列、空の配列、false、null、または 0)。 | 属性:EmptyConstraint::class 方法: Validation::empty() |
082 | 名前: required 使用法: required | 入力が必須であることをアサートします (空白ではない、つまり、空の文字列または null ではありません)。 | 属性:Required::class 方法: Validation::required() |
083 | 名前: allowed 使用法: allowed | 入力が許可されていることをアサートします (空または任意の値を指定できます。null および空の文字列は有効な値とみなされます)。 | 属性:Allowed::class 方法: Validation::allowed() |
084 | 名前: forbidden 使用法: forbidden | 入力が禁止されていること (null または存在しないこと) をアサートします。 | 属性:Forbidden::class 方法: Validation::forbidden() |
085 | 名前: accepted 使用法: accepted | 入力が受け入れられたことをアサートします (等しい: "on"、"yes"、"yeah"、"yep"、"yo"、"ok"、"okay"、"aye"、1 または "1"、true または " true") 文字列は大文字と小文字を区別しない方法で処理されることに注意してください。 | 属性:Accepted::class 方法: Validation::accepted() |
086 | 名前: declined 使用法: declined | 入力が拒否されたことをアサートします (「off」、「no」、「not」、「nope」、「neh」、「nay」、0 または 「0」、false または「false」に等しい)。文字列が処理されることに注意してください。大文字と小文字を区別しない方法で。 | 属性:Declined::class 方法: Validation::declined() |
087 | 名前: bit 使用法: bit | 入力がビットであることをアサートします (等しい: 1 または "1"、true; 0 または "0"、false)。 | 属性:Bit::class 方法: Validation::bit() |
088 | 名前: bit.isOn 使用法: bit.isOn | 入力がオンになったビットであることをアサートします (true、1、または「1」に等しい)。 | 属性:BitIsOn::class 方法: Validation::bitIsOn() |
089 | 名前: bit.isOff 使用法: bit.isOff | 入力がオフになったビットであることをアサートします (偽、0、または「0」に等しい)。 | 属性:BitIsOff::class 方法: Validation::bitIsOff() |
090 | 名前: equals 使用法: equals:value | 入力が指定された値と等しいことをアサートします。スカラー型および null で動作します。比較演算子は「==」です。 | 属性:Equals::class 方法: Validation::equals(string|int|float|bool|null $value) |
091 | 名前: matches 使用法: matches:'"/^[a-zA-Z0-9]+$/"' | 入力が指定されたパターンに一致することをアサートします。文字列のみで動作します。 | 属性:Matches::class 方法: Validation::matches(string $pattern) |
092 | 名前: in 使用法: in:val1,val2,... | 入力が指定された値であることをアサートします。スカラー型および null で動作します。 | 属性:In::class 方法: Validation::in(string|int|float|bool|null ...$values) |
093 | 名前: count 使用法: count:3 | 入力カウントが指定された値と等しいことをアサートします。すべてのデータ型 (null: 0、boolean: 0 または 1、float/integer: 数値、string: 文字数、array/countable: 要素数、object: アクセス可能なプロパティ数) で動作します。 | 属性:Count::class 方法: Validation::count(int $count) |
094 | 名前: min 使用量: min:3 | 入力カウントが指定された値以上であることをアサートします。すべてのデータ型 (null: 0、boolean: 0 または 1、float/integer: 数値、string: 文字数、array/countable: 要素数、object: アクセス可能なプロパティ数) で動作します。 | 属性:Min::class 方法: Validation::min(int|float $count) |
095 | 名前: max 使用量: max:3 | 入力カウントが指定された値以下であることをアサートします。すべてのデータ型 (null: 0、boolean: 0 または 1、float/integer: 数値、string: 文字数、array/countable: 要素数、object: アクセス可能なプロパティ数) で動作します。 | 属性:Max::class 方法: Validation::max(int|float $count) |
096 | 名前: between 使用法 between:3,7 | 入力カウントが指定された値の間にあることをアサートします。すべてのデータ型 (null: 0、boolean: 0 または 1、float/integer: 数値、string: 文字数、array/countable: 要素数、object: アクセス可能なプロパティ数) で動作します。 | 属性:Between::class 方法: Validation::between(int|float $min, int|float $max) |
097 | 名前: number.isPositive 使用法: number.isPositive | 入力が正の数であることをアサートします。 | 属性:NumberIsPositive::class 方法: Validation::numberIsPositive() |
098 | 名前: number.isNegative 使用法: number.isNegative | 入力が負の数であることをアサートします。 | 属性:NumberIsNegative::class 方法: Validation::numberIsNegative() |
099 | 名前: number.isEven 使用法: number.isEven | 入力が偶数であることをアサートします。 | 属性:NumberIsEven::class 方法: Validation::numberIsEven() |
100 | 名前: number.isOdd 使用法: number.isOdd | 入力が奇数であることをアサートします。 | 属性:NumberIsOdd::class 方法: Validation::numberIsOdd() |
101 | 名前: number.isMultipleOf 使用法: number.isMultipleOf:3 | 入力が指定された数値の倍数であることをアサートします。 | 属性:NumberIsMultipleOf::class 方法: Validation::numberIsMultipleOf(float $number) |
102 | 名前: number.isFinite 使用法: number.isFinite | 入力が有限数であることをアサートします。 | 属性:NumberIsFinite::class 方法: Validation::numberIsFinite() |
103 | 名前: number.isInfinite 使用法: number.isInfinite | 入力が無限数であることをアサートします。 | 属性:NumberIsInfinite::class 方法: Validation::numberIsInfinite() |
104 | 名前: number.isNan 使用法: number.isNan | 入力が数値ではないことをアサートします。 | 属性:NumberIsNan::class 方法: Validation::numberIsNan() |
105 | 名前: string.charset 使用法: string.charset:UTF-8 | 入力が指定された文字セット (エイリアスを含む) のいずれかでエンコードされていることをアサートします。チェックは大文字と小文字を区別して行われます。 | 属性:StringCharset::class 方法: Validation::stringCharset(string|array $charset) |
106 | 名前: string.contains 使用法: string.contains:substring | 入力に指定された部分文字列が含まれていることをアサートします。 2 番目のブール引数を指定して、厳密モード (大文字と小文字を区別する) を有効にすることができます。 | 属性:StringContains::class 方法: Validation::stringContains(string $substring, bool $strict = false) |
107 | 名前: string.startsWith 使用法: string.startsWith:substring,1 | 入力が指定された部分文字列で始まることをアサートします。 2 番目のブール引数を指定して、厳密モード (大文字と小文字を区別する) を有効にすることができます。 | 属性:StringStartsWith::class 方法: Validation::stringStartsWith(string $substring, bool $strict = false) |
108 | 名前: string.endsWith 使用法: string.endsWith:substring,0 | 入力が指定された部分文字列で終わることをアサートします。 2 番目のブール引数を指定して、厳密モード (大文字と小文字を区別する) を有効にすることができます。 | 属性:StringEndsWith::class 方法: Validation::stringEndsWith(string $substring, bool $strict = false) |
109 | 名前: string.length 使用法: string.length:3 | 入力が指定された長さと正確に一致する文字列であることをアサートします。 | 属性:StringLength::class 方法: Validation::stringLength(int $length) |
110 | 名前: string.wordsCount 使用法: string.wordsCount:3 | 入力が、指定された単語数を正確に含む文字列であることをアサートします。 | 属性:StringWordsCount::class 方法: Validation::stringWordsCount(int $count) |
111 | 名前: array.hasKey 使用法: array.hasKey:key | 入力配列に指定されたキーがあることをアサートします。 | 属性:ArrayHasKey::class 方法: Validation::arrayHasKey(string|int $key) |
112 | 名前: array.hasValue 使用法: array.hasValue:value | 入力配列に指定された値が含まれていることをアサートします。スカラー型で動作します。 | 属性:ArrayHasValue::class 方法: Validation::arrayHasValue(mixed $value) |
113 | 名前: array.hasDistinct 使用法: array.hasDistinct:key | 入力が、指定されたキーの個別の値を含む多次元配列であることをアサートします。 | 属性:ArrayHasDistinct::class 方法: Validation::arrayHasDistinct(string|int $key) |
114 | 名前: array.isAssociative 使用法: array.isAssociative | 入力が連想配列であることをアサートします。 | 属性:ArrayIsAssociative::class 方法: Validation::arrayIsAssociative() |
115 | 名前: array.isSequential 使用法: array.isSequential | 入力が順次配列であることをアサートします。 | 属性:ArrayIsSequential::class 方法: Validation::arrayIsSequential() |
116 | 名前: array.isUnique 使用法: array.isUnique | 入力配列に一意の値が含まれていることをアサートします。 1 次元配列でのみ機能します。 | 属性:ArrayIsUnique::class 方法: Validation::arrayIsUnique() |
117 | 名前: array.subset 使用法: array.subset:'{"a":1,"b":2}' | 入力が指定されたサブセットを含む配列であることをアサートします。このチェックは配列の最初の次元にのみ適用されることに注意してください。 | 属性:ArraySubset::class 方法: Validation::arraySubset(array $subset) |
118 | 名前: object.hasProperty 使用法: object.hasProperty:property | 入力に指定されたプロパティがあることをアサートします。 | 属性:ObjectHasProperty::class 方法: Validation::objectHasProperty(string $property) |
119 | 名前: object.hasMethod 使用法: object.hasMethod:method | 入力に指定されたメソッドがあることをアサートします。 | 属性:ObjectHasMethod::class 方法: Validation::objectHasMethod(string $method) |
120 | 名前: object.isStringable 使用法: object.isStringable | 入力が __toString() メソッドを実装していることをアサートします。 | 属性:ObjectIsStringable::class 方法: Validation::objectIsStringable() |
121 | 名前: object.isInstanceOf 使用法: object.isInstanceOf:NamespaceClass | 入力が指定されたクラスのインスタンスであることをアサートします。 | 属性:ObjectIsInstanceOf::class 方法: Validation::objectIsInstanceOf(string $classFQN) |
122 | 名前: object.isSubclassOf 使用法: object.isSubclassOf:NamespaceClass | 入力が指定されたクラスのサブクラスであることをアサートします。 | 属性:ObjectIsSubclassOf::class 方法: Validation::objectIsSubclassOf(string $classFQN) |
123 | 名前: serialized 使用法: serialized | 入力が有効な PHP シリアル化データであることをアサートします。 | 属性:Serialized::class 方法: Validation::serialized() |
124 | 名前: json 使用法: json | 入力が有効な JSON であることをアサートします。 | 属性:Json::class 方法: Validation::json() |
125 | 名前: base64 使用法: base64 | 入力が有効な Base64 エンコード文字列であることをアサートします。 | 属性:Base64::class 方法: Validation::base64() |
126 | 名前: xml 使用法: xml | 入力が有効な XML であることをアサートします。 | 属性:Xml::class 方法: Validation::xml() |
127 | 名前: locale 使用法: locale | 入力が有効なロケール識別子であることをアサートします (デフォルト: [ISO 639-1] または [ISO 639-1]_[ISO 3166-1 alpha-2]、大文字と小文字は区別されません、入力はチェックする前に正規化されます (ダッシュからアンダースコアに、ドットまたは文字セットなし); 厳密: [ISO 639-1] または [ISO 639-1]_[ISO 3166-1 alpha-2]、正規化なしで大文字と小文字が区別されます。 | 属性:Locale::class 方法: Validation::locale(bool $strict = false) |
128 | 名前: language 使用法: language | 入力が有効な言語コードであることをアサートします (デフォルト: "ISO 639-1"、長さ: "ISO 639-2/T")。 | 属性:Language::class 方法: Validation::language(bool $long = false) |
129 | 名前: country 使用法: country | 入力が有効な国コードであることをアサートします (デフォルト: "ISO 3166-1 alpha-2"、長さ: "ISO 3166-1 alpha-3")。 | 属性:Country::class 方法: Validation::country(bool $long = false) |
130 | 名前: timezone 使用法: timezone | 入力が有効なタイムゾーン識別子であることをアサートします (デフォルト: 大文字と小文字を区別しない、厳密: 大文字と小文字を区別)。 | 属性:Timezone::class 方法: Validation::timezone(bool $strict = false) |
131 | 名前: datetime 使用法: datetime | 入力が有効な日時文字列/オブジェクトであることをアサートします。 | 属性:Datetime::class 方法: Validation::datetime() |
132 | 名前: datetime.eq 使用法: datetime.eq:"2015-01-01" | 入力が指定された日時文字列と等しいことをアサートします。 | 属性:DatetimeEq::class 方法: Validation::datetimeEq(string $datetime) |
133 | 名前: datetime.lt 使用法: datetime.lt:tomorrow | 入力が指定された日時文字列よりも小さい (前) 日時文字列/オブジェクトであることをアサートします。 | 属性:DatetimeLt::class 方法: Validation::datetimeLt(string $datetime) |
134 | 名前: datetime.lte 使用法: datetime.lte:tomorrow | 入力が、指定された日時文字列よりも小さい (前) か、それと等しい日時文字列/オブジェクトであることをアサートします。 | 属性:DatetimeLte::class 方法: Validation::datetimeLte(string $datetime) |
135 | 名前: datetime.gt 使用法: datetime.gt:today | 入力が指定された日時文字列より大きい (後) 日時文字列/オブジェクトであることをアサートします。 | 属性:DatetimeGt::class 方法: Validation::datetimeGt(string $datetime) |
136 | 名前: datetime.gte 使用法: datetime.gte:today | 入力が、指定された日時文字列以上 (後) またはそれと等しい日時文字列/オブジェクトであることをアサートします。 | 属性:DatetimeGte::class 方法: Validation::datetimeGte(string $datetime) |
137 | 名前: datetime.birthday 使用法: datetime.birthday | 入力が今日が誕生日の日時文字列/オブジェクトであることをアサートします。入力は「YYYY-MM-DD」形式であることが望ましいです。 | 属性:DatetimeBirthday::class 方法: Validation::datetimeBirthday() |
138 | 名前: datetime.format 使用法: datetime.format:"Ymd H:i:s" | 入力が指定された形式の有効な日付/時刻であることをアサートします。 | 属性:DatetimeFormat::class 方法: Validation::datetimeFormat(string $format) |
139 | 名前: datetime.format.global 使用法: datetime.format.global | 入力が HTML5 仕様で定義されている有効なグローバル日時文字列であることをアサートします。 | 属性:DatetimeFormatGlobal::class 方法: Validation::datetimeFormatGlobal() |
140 | 名前: datetime.format.local 使用法: datetime.format.local | 入力が HTML5 仕様で定義されている有効なローカル日時文字列であることをアサートします。 | 属性:DatetimeFormatLocal::class 方法: Validation::datetimeFormatLocal() |
141 | 名前: datestamp 使用法: datestamp | 入力がドット、ダッシュ、またはスラッシュで区切られた人間の日付スタンプ、DMY または MDY 形式であることをアサートします。 | 属性:Datestamp::class 方法: Validation::datestamp() |
142 | 名前: datestamp.ymd 使用法: datestamp.ymd | 入力がドット、ダッシュ、またはスラッシュで区切られた人間の YMD 形式の日付スタンプのように見えることをアサートします。 | 属性:DatestampYmd::class 方法: Validation::datestampYmd() |
143 | 名前: datestamp.dmy 使用法: datestamp.dmy | 入力がドット、ダッシュ、またはスラッシュで区切られた人間の DMY 形式の日付スタンプのように見えることをアサートします。 | 属性:DatestampDmy::class 方法: Validation::datestampDmy() |
144 | 名前: datestamp.mdy 使用法: datestamp.mdy | 入力がドット、ダッシュ、またはスラッシュで区切られた人間の MDY 形式の日付スタンプのように見えることをアサートします。 | 属性:DatestampMdy::class 方法: Validation::datestampMdy() |
145 | 名前: timestamp 使用法: timestamp | 入力が人間のタイムスタンプ、秒の有無にかかわらず 24 時間または 12 時間形式であることをアサートします。 | 属性:Timestamp::class 方法: Validation::timestamp() |
146 | 名前: timestamp.12 使用法: timestamp.12 | 入力が人間のタイムスタンプ、秒の有無にかかわらず 12 時間形式、およびオプションの AM/PM のように見えることをアサートします。 | 属性:Timestamp12::class 方法: Validation::timestamp12() |
147 | 名前: timestamp.hms 使用法: timestamp.hms | 入力が人間のタイムスタンプ、秒付きの 24 時間または 12 時間形式であることをアサートします。 | 属性:TimestampHms::class 方法: Validation::timestampHms() |
148 | 名前: timestamp.hm 使用法: timestamp.hm | 入力が人間のタイムスタンプ、秒のない 24 時間または 12 時間形式のように見えることをアサートします。 | 属性:TimestampHm::class 方法: Validation::timestampHm() |
149 | 名前: timestamp.ms 使用法: timestamp.ms | 入力が人間のタイムスタンプのように見え、分と秒のみを含むことをアサートします。 | 属性:TimestampMs::class 方法: Validation::timestampMs() |
150 | 名前: calender.day 使用法: calender.day | 入力がカレンダーの日付のショットまたは長い形式 (「Mon」または「Monday」) のように見えることをアサートします。 | 属性:CalenderDay::class 方法: Validation::calenderDay() |
151 | 名前: calender.month 使用法: calender.month | 入力がショット形式またはロング形式 (「Jan」または「 January」) の暦月のように見えることをアサートします。 | 属性:CalenderMonth::class 方法: Validation::calenderMonth() |
152 | 名前: username 名使用法: username | 入力が有効なユーザー名 (4 ~ 32 文字で、大文字と小文字にかかわらず文字、オプションで数字、オプションで次の文字「-_.」の 1 つ (連続していない) で構成され、常に文字で始まり最後に終わる必要がある) であることをアサートします。文字または数字を使用してください)。 | 属性:Username::class 方法: Validation::username() |
153 | 名前: password 使用法: password | 入力が有効なパスワードであることをアサートします (最小 8 文字、少なくとも 1 つの小文字と 1 つの大文字、少なくとも 1 つの数字、少なくとも 1 つの特殊文字、およびオプションでスペースで構成されます)。 | 属性:Password::class 方法: Validation::password() |
154 | 名前: uuid 使用法: uuid | 入力が有効な UUID であることをアサートします。バージョン (v1/v2/v3/v4/v5) を指定してパターンを絞り込むことができます。 | 属性:Uuid::class 方法: Validation::uuid(string|int|null $version = null) |
155 | 名前: ascii 使用法: ascii | 入力が ASCII 文字のみを含む文字列 (ASCII 準拠の文字列) であることをアサートします。 | 属性:Ascii::class 方法: Validation::ascii() |
156 | 名前: slug 使用法: slug | 入力が有効なスラッグであることをアサートします。 | 属性:Slug::class 方法: Validation::slug() |
157 | 名前: meta 使用法: meta | 入力がメタ文字 (特殊文字) (つまり、「@、#、$、...」) のみを含む文字列であることをアサートします。 | 属性:Meta::class 方法: Validation::meta() |
158 | 名前: text 使用法: text | 入力が任意の言語の文字と句読点を含む文字列であることをアサートします。 | 属性:Text::class 方法: Validation::text() |
159 | 名前: words 使用法: words | 入力が他の文字を含まない単語とスペースのみを含む文字列であることをアサートします。 | 属性:Words::class 方法: Validation::words() |
160 | 名前: spaceless 使用法: spaceless | 入力が空白文字を含まない文字列であることをアサートします。 | 属性:Spaceless::class 方法: Validation::spaceless() |
161 | 名前: emoji 使用法: emoji | 入力に絵文字が含まれていることをアサートします。 | 属性:Emoji::class 方法: Validation::emoji() |
162 | 名前: roman 使用法: roman | 入力が有効なローマ数字であることをアサートします。 | 属性:Roman::class 方法: Validation::roman() |
163 | 名前: phone 使用法: phone | 入力が有効な電話番号であることをアサートします (サポート: 北米、ヨーロッパ、ほとんどのアジアおよび中東諸国)。 | 属性:Phone::class 方法: Validation::phone() |
164 | 名前: geolocation 使用法: geolocation | 入力が有効な地理位置情報 (緯度と経度の座標の組み合わせ) であることをアサートします。 | 属性:Geolocation::class 方法: Validation::geolocation() |
165 | 名前: version 使用法: version | 入力が有効なセマンティック バージョン番号であることをアサートします。 | 属性:Version::class 方法: Validation::version() |
166 | 名前: amount 使用量: amount | 入力に数値、オプションの小数点 (カンマまたはドット)、およびオプションのマイナス (金額などに使用される) のみが含まれていることをアサートします。 | 属性:Amount::class 方法: Validation::amount() |
167 | 名前: amount.dollar 使用法: amount.dollar | 入力が有効にフォーマットされた USD の金額であることをアサートします。小数点と千の位の区切り文字はオプションです。 | 属性:AmountDollar::class 方法: Validation::amountDollar() |
168 | 名前: amount.euro 使用法: amount.euro | 入力が有効にフォーマットされた EUR の金額であることをアサートします。小数点と千の位の区切り文字はオプションです。 | 属性:AmountEuro::class 方法: Validation::amountEuro() |
169 | 名前: color 使用法: color | 入力が有効な CSS カラー (キーワード「loose」、HEX、HEX-Alpha、RGB、RGBA、RGB「新しい構文」、HSL、HSLA、HSL 「新しい構文」) であることをアサートします。 | 属性:Color::class 方法: Validation::color() |
170 | 名前: color.hex 使用法: color.hex | 入力が有効な CSS HEX カラーであることをアサートします。 | 属性:ColorHex::class 方法: Validation::colorHex() |
171 | 名前: color.hexShort 使用法: color.hexShort | 入力が有効な CSS 3-Char-HEX カラーであることをアサートします。 | 属性:ColorHexShort::class 方法: Validation::colorHexShort() |
172 | 名前: color.hexLong 使用法: color.hexLong | 入力が有効な CSS 6-Char-HEX カラーであることをアサートします。 | 属性:ColorHexLong::class 方法: Validation::colorHexLong() |
173 | 名前: color.hexAlpha 使用法: color.hexAlpha | 入力が有効な CSS HEX-Alpha (4 文字または 8 文字) カラーであることをアサートします。 | 属性:ColorHexAlpha::class 方法: Validation::colorHexAlpha() |
174 | 名前: color.rgb 使用法: color.rgb | 入力が有効な CSS RGB カラーであることをアサートします。 | 属性:ColorRgb::class 方法: Validation::colorRgb() |
175 | 名前: color.rgba 使用法: color.rgba | 入力が有効な CSS RGBA カラーであることをアサートします。 | 属性:ColorRgba::class 方法: Validation::colorRgba() |
176 | 名前: color.rgb.new 使用法: color.rgb.new | 入力が有効な CSS4 RGB カラーであることをアサートします。 | 属性:ColorRgbNew::class 方法: Validation::colorRgbNew() |
177 | 名前: color.hsl 使用法: color.hsl | 入力が有効な CSS HSL カラーであることをアサートします。 | 属性:ColorHsl::class 方法: Validation::colorHsl() |
178 | 名前: color.hsla 使用法: color.hsla | 入力が有効な CSS HSLA カラーであることをアサートします。 | 属性:ColorHsla::class 方法: Validation::colorHsla() |
179 | 名前: color.hsl.new 使用法: color.hsl.new | 入力が有効な CSS4 HSL カラーであることをアサートします。 | 属性:ColorHslNew::class 方法: Validation::colorHslNew() |
180 | 名前: color.keyword 使用法: color.keyword | 入力は有効なCSSキーワード色であると主張しています(CSS仕様のように、厳格です)。 | 属性:ColorKeyword::class 方法: Validation::colorKeyword() |
181 | 名前: ssn 使用法: ssn | 入力は有効なSSN(米国の社会保障番号)であると主張しています。 | 属性:Ssn::class 方法: Validation::ssn() |
182 | 名前: sin 使用法: sin | 入力は有効な罪(CA社会保険番号)であると主張しています。 | 属性:Sin::class 方法: Validation::sin() |
183 | 名前: nino 使用法: nino | 入力は有効なニノ(英国の国民保険番号)であると主張しています。 | 属性:Nino::class 方法: Validation::nino() |
184 | 名前: vin 使用法: vin | 入力は有効なVIN(車両識別番号)であると主張しています。 | 属性:Vin::class 方法: Validation::vin() |
185 | 名前: issn 使用法: issn | 入力は有効なISSN(国際標準のシリアル番号)であると主張しています。 | 属性:Issn::class 方法: Validation::issn() |
186 | 名前: isin 使用法: isin | 入力は有効なISIN(国際証券識別番号)であると主張しています。 | 属性:Isin::class 方法: Validation::isin() |
187 | 名前: isbn 使用法: isbn | 入力は有効なISBN(国際標準簿番号)であると主張しています。タイプ(10/13)は、パターンを狭めるように指定できます。 | 属性:Isbn::class 方法: Validation::isbn(string|int|null $type = null) |
188 | 名前: imei 使用法: imei | 入力は有効なIMEI(国際的なモバイルステーション機器の身元番号)であると主張しています。 | 属性:Imei::class 方法: Validation::imei() |
189 | 名前: imei.sv 使用法: imei.sv | 入力は有効なIMEI-SV(国際的なモバイルステーション機器のIDおよびソフトウェアバージョン番号)であると主張しています。 | 属性:ImeiSv::class 方法: Validation::imeiSv() |
190 | 名前: meid 使用法: meid | 入力は有効なMEID(モバイル機器識別子)であると主張しています。 | 属性:Meid::class 方法: Validation::meid() |
191 | 名前: esn 使用法: esn | 入力は有効なESN(電子シリアル番号)であると主張します。 | 属性:Esn::class 方法: Validation::esn() |
192 | 名前: currency 使用法: currency | 入力は有効な通貨コードであると主張しています(デフォルト: "ISO 4217 alpha"; numeric: "ISO 4217 numeric")。 | 属性:Currency::class 方法: Validation::currency(bool $numeric = false) |
193 | 名前: currency.name 使用法: currency.name | 入力は有効な通貨名であると主張します(ISO 4217のように)。 | 属性:CurrencyName::class 方法: Validation::currencyName() |
194 | 名前: creditcard 使用法: creditcard | 入力は有効なクレジットカード番号、バランスの取れたスペースおよび/またはダッシュが許可されていると主張しています。 | 属性:Creditcard::class 方法: Validation::creditcard() |
195 | 名前: creditcard.visa 使用法: creditcard.visa | 入力は有効なビザクレジットカード番号であると主張しています。バランスの取れたスペースやダッシュが許可されています。 | 属性:CreditcardVisa::class 方法: Validation::creditcardVisa() |
196 | 名前: creditcard.mastercard 使用法: creditcard.mastercard | 入力は有効なMasterCardクレジットカード番号、バランスの取れたスペースやダッシュが許可されていると主張しています。 | 属性:CreditcardMastercard::class 方法: Validation::creditcardMastercard() |
197 | 名前: creditcard.discover 使用法: creditcard.discover | 入力は有効な発見クレジットカード番号、バランスの取れたスペースおよび/またはダッシュが許可されていると主張しています。 | 属性:CreditcardDiscover::class 方法: Validation::creditcardDiscover() |
198 | 名前: creditcard.americanExpress 使用法: creditcard.americanExpress | 入力は有効なAmerican Expressクレジットカード番号であると主張しています。バランスの取れたスペースやダッシュが許可されています。 | 属性:CreditcardAmericanExpress::class 方法: Validation::creditcardAmericanExpress() |
199 | 名前: creditcard.dinersClub 使用法: creditcard.dinersClub | 入力は有効なダイナークラブのクレジットカード番号であると主張しています。バランスの取れたスペースやダッシュが許可されています。 | 属性:CreditcardDinersClub::class 方法: Validation::creditcardDinersClub() |
200 | 名前: creditcard.jcb 使用法: creditcard.jcb | 入力は有効なJCBクレジットカード番号、バランスの取れたスペースやダッシュが許可されていると主張しています。 | 属性:CreditcardJcb::class 方法: Validation::creditcardJcb() |
201 | 名前: creditcard.maestro 使用法: creditcard.maestro | 入力は有効なMaestroクレジットカード番号であると主張しています。バランスの取れたスペースやダッシュが許可されています。 | 属性:CreditcardMaestro::class 方法: Validation::creditcardMaestro() |
202 | 名前: creditcard.chinaUnionPay 使用法: creditcard.chinaUnionPay | 入力は有効な中国組合支払いクレジットカード番号であると主張しています。バランスのとれたスペースやダッシュが許可されています。 | 属性:CreditcardChinaUnionPay::class 方法: Validation::creditcardChinaUnionPay() |
203 | 名前: creditcard.instaPayment 使用法: creditcard.instaPayment | 入力は有効なInstapaymentクレジットカード番号であると主張しています。バランスの取れたスペースやダッシュが許可されています。 | 属性:CreditcardInstaPayment::class 方法: Validation::creditcardInstaPayment() |
204 | 名前: creditcard.laser 使用法: creditcard.laser | 入力は有効なレーザークレジットカード番号であると主張しています。バランスの取れたスペースやダッシュが許可されています。 | 属性:CreditcardLaser::class 方法: Validation::creditcardLaser() |
205 | 名前: creditcard.uatp 使用法: creditcard.uatp | 入力は有効なUATPクレジットカード番号、バランスの取れたスペースおよび/またはダッシュが許可されていると主張しています。 | 属性:CreditcardUatp::class 方法: Validation::creditcardUatp() |
206 | 名前: creditcard.mir 使用法: creditcard.mir | 入力は有効なmiR支払いシステムカード番号であると主張しています。バランスの取れたスペースやダッシュが許可されています。 | 属性:CreditcardMir::class 方法: Validation::creditcardMir() |
207 | 名前: cvv 使用法: cvv | 入力は有効なCVV(カードセキュリティコード)であると主張しています。 | 属性:Cvv::class 方法: Validation::cvv() |
208 | 名前: bic 使用法: bic | 入力は有効なBIC(銀行識別子コード)であると主張しています。 | 属性:Bic::class 方法: Validation::bic() |
209 | 名前: iban 使用法: iban:IQ | 入力は有効なIBAN(国際銀行口座番号)であると主張しています。 「ISO 3166-1 Alpha-2」の国コードは、パターンを狭めるように指定できます。 | 属性:Iban::class 方法: Validation::iban(?string $country = null) |
210 | 名前: luhn 使用法: luhn | 入力がLuhnアルゴリズムチェックに合格すると主張します。このルールは、主にクレジットカード番号や識別子などの他のルールと組み合わせて使用され、被験者の有効性をさらに確認します。 | 属性:Luhn::class 方法: Validation::luhn() |
211 | 名前: php.keyword 使用法: php.keyword | 入力はPHP言語キーワードであると主張します。 | 属性:PhpKeyword::class 方法: Validation::phpKeyword() |
212 | 名前: php.reserved 使用法: php.reserved | 入力はPHP言語の予約単語であると主張します。 | 属性:PhpReserved::class 方法: Validation::phpReserved() |
213 | 名前: php.reserved.extra 使用法: php.reserved.extra | 入力は、ソフト予約単語を含むPHP言語の予約単語であると主張しています。 | 属性:PhpReservedExtra::class 方法: Validation::phpReservedExtra() |
214 | 名前: regex 使用法: regex | 入力は有効な正規表現であると主張します。 | 属性:Regex::class 方法: Validation::regex() |
215 | 名前: bool 使用法: boolean 参照してください | エイリアス、詳細については、 boolean を参照してください。 | 属性:BoolConstraint::class 方法: Validation::bool() |
216 | 名前: int 使用法: integer 参照してください | エイリアス、完全な説明についてはinteger を参照してください。 | 属性:IntConstraint::class 方法: Validation::int() |
217 | 名前: long 使用法: integer 参照してください | エイリアス、完全な説明についてはinteger を参照してください。 | 属性:Long::class 方法: Validation::long() |
218 | 名前: double 使用法: float 参照してください | エイリアス、詳細についてはfloat を参照してください。 | 属性:Double::class 方法: Validation::double() |
219 | 名前: real 使用法: float 参照してください | エイリアス、詳細についてはfloat を参照してください。 | 属性:Real::class 方法: Validation::real() |
220 | 名前: str 使用法: string を参照してください | エイリアス、詳細についてはstring を参照してください。 | 属性:Str::class 方法: Validation::str() |
221 | 名前: arr 使用法: array 参照してください | エイリアス、完全な説明については、 array を参照してください。 | 属性:Arr::class 方法: Validation::arr() |
222 | 名前: obj 使用法: object 参照してください | エイリアス、完全な説明についてはobject を参照してください。 | 属性:Obj::class 方法: Validation::obj() |
223 | 名前: stream 使用法: resource 参照してください | エイリアス、完全な説明についてはresource を参照してください。 | 属性:Stream::class 方法: Validation::stream() |
224 | 名前: assert 使用法: if 確認します | エイリアス、詳細についてはif 参照してください。 | 属性:Assert::class 方法: Validation::assert(mixed $actual, mixed $expected = true, string $operator = '==') |
225 | 名前: assert.equals 使用法: if.eq 参照してください | エイリアス、完全な説明についてはif.eq を参照してください。 | 属性:AssertEquals::class 方法: Validation::assertEquals(mixed $actual, mixed $expected) |
226 | 名前: assert.notEquals 使用法: if.neq 参照してください | エイリアス、完全な説明については、 if.neq を参照してください。 | 属性:AssertNotEquals::class 方法: Validation::assertNotEquals(mixed $actual, mixed $expected) |
227 | 名前: assert.greaterThan 使用法: if.gt 参照してください | エイリアス、完全な説明についてはif.gt を参照してください。 | 属性:AssertGreaterThan::class 方法: Validation::assertGreaterThan(mixed $actual, mixed $expected) |
228 | 名前: assert.greaterThanOrEquals 使用法: if.gte 参照してください | エイリアス、完全な説明についてはif.gte を参照してください。 | 属性:AssertGreaterThanOrEquals::class 方法: Validation::assertGreaterThanOrEquals(mixed $actual, mixed $expected) |
229 | 名前: assert.lessThan 使用法: if.lt 参照してください | エイリアス、完全な説明についてはif.lt を参照してください。 | 属性:AssertLessThan::class 方法: Validation::assertLessThan(mixed $actual, mixed $expected) |
230 | 名前: assert.lessThanOrEquals 使用法: if.lte 参照してください | エイリアス、完全な説明についてはif.lte を参照してください。 | 属性:AssertLessThanOrEquals::class 方法: Validation::assertLessThanOrEquals(mixed $actual, mixed $expected) |
231 | 名前: blank 使用法: empty 参照してください | エイリアス、完全な説明についてはempty を参照してください。 | 属性:Blank::class 方法: Validation::blank() |
232 | 名前: is 使用法: equals を参照してください | エイリアス、完全な説明についてはequals を参照してください。 | 属性:Is::class 方法: Validation::is(mixed $value) |
233 | 名前: same 使用法: equals を参照してください | エイリアス、完全な説明についてはequals を参照してください。 | 属性:Same::class 方法: Validation::same(mixed $value) |
234 | 名前: pattern 使用法: matches 参照してください | エイリアス、完全な説明についてはmatches を参照してください。 | 属性:Pattern::class 方法: Validation::pattern(string $pattern) |
235 | 名前: choice 使用法: in 参照してください | エイリアス、詳細in は、参照してください。 | 属性:Choice::class 方法: Validation::choice(string|int|float|bool|null ...$values) |
236 | 名前: size 使用法: count 参照してください | エイリアス、完全な説明についてはcount を参照してください。 | 属性:Size::class 方法: Validation::size(int $size) |
237 | 名前: length 使用法: count 参照してください | エイリアス、完全な説明についてはcount を参照してください。 | 属性:Length::class 方法: Validation::length(int $count) |
238 | 名前: range 使用法: between 参照してください | エイリアス、完全な説明については、 between を参照してください。 | 属性:Range::class 方法: Validation::range(int|float $min, int|float $max) |
239 | 名前: minmax 使用法: between 参照してください | エイリアス、完全な説明については、 between を参照してください。 | 属性:Minmax::class 方法: Validation::minmax(int|float $min, int|float $max) |
240 | 名前: filled 使用法: required を参照してください | エイリアス、完全な説明にrequired を参照してください。 | 属性:Filled::class 方法: Validation::filled() |
241 | 名前: present 使用法: required を参照してください | エイリアス、完全な説明にrequired を参照してください。 | 属性:Present::class 方法: Validation::present() |
242 | 名前: optional 使用法: allowed 参照してください | エイリアス、完全な説明を参照してallowed 。 | 属性:Optional::class 方法: Validation::optional() |
243 | 名前: date 使用法: datetime 参照してください | エイリアス、完全な説明については、 datetime を参照してください。 | 属性:Date::class 方法: Validation::date() |
244 | 名前: date.equals 使用法: datetime.eq 参照してください | エイリアス、完全な説明については、 datetime.eq を参照してください。 | 属性:DateEquals::class 方法: Validation::dateEquals(string $datetime) |
245 | 名前: date.before 使用法: datetime.lt 参照してください | エイリアス、完全な説明については、 datetime.lt を参照してください。 | 属性:DateBefore::class 方法: Validation::dateBefore(string $datetime) |
246 | 名前: date.beforeOrEquals 使用法: datetime.lte 参照してください | エイリアス、完全な説明については、 datetime.lte を参照してください。 | 属性:DateBeforeOrEquals::class 方法: Validation::dateBeforeOrEquals(string $datetime) |
247 | 名前: date.after 使用法: datetime.gt 参照してください | エイリアス、完全な説明については、 datetime.gt を参照してください。 | 属性:DateAfter::class 方法: Validation::dateAfter(string $datetime) |
248 | 名前: date.afterOrEquals 使用法: datetime.gte 参照してください | エイリアス、完全な説明については、 datetime.gte を参照してください。 | 属性:DateAfterOrEquals::class 方法: Validation::dateAfterOrEquals(string $datetime) |
249 | 名前: date.format 使用法: datetime.format 参照してください | エイリアス、完全な説明については、 datetime.format を参照してください。 | 属性:DateFormat::class 方法: Validation::dateFormat(string $format) |
250 | 名前: cakeday 使用法: datetime.birthday を参照してください | エイリアス、完全な説明については、 datetime.birthday を参照してください。 | 属性:Cakeday::class 方法: Validation::cakeday() |
マクロ | 検証式 |
---|---|
[nullable] | null^~empty |
[alnumDash] | matches:"/[a-zA-Z0-9-_]+/" |
[twitterHandle] | matches:'"/^[a-zA-Z_]{1}[a-zA-Z0-9_]{0,14}$/"' |
[gmail] | email&string.contains:"@gmail." |
[eduMail] | email&string.endsWith:".edu" |
今では、 mightyあまりにも多くのことをしており、パフォーマンスの懸念が生じ始めているように見えるかもしれません。まあ、それについて心配する必要はありません。 mighty非常に高速で、最高のパフォーマンスを提供するために最適化されています。以下は、バリデーターのパフォーマンスのベンチマークをいくつか紹介します。
Laravelアプリケーションにおけるmighty ValidatorとLaravel Validatorのパフォーマンス。テストは50000要素の配列を使用して実行され、その半分は整数であり、残りの半分は数値文字列です。各バリデーターは10回(連続して)テストされ、これら10の平均結果が収集されました。
$ data = array_merge ( range ( 1 , 25000 ), array_map ( ' strval ' , range ( ' 25001 ' , ' 50000 ' )));
// mighty Validator with XDebug disabled
[ // required&integer
' preparationTime ' => ' 1.32ms ' , // the time required to build the array
' validationTime ' => ' 1107.29ms ' , // the time required to validate the array
' totalTime ' => ' 1108.61ms ' , // the time required for the whole process
]
// mighty Validator with XDebug enabled
[ // required&integer
' preparationTime ' => ' 9.09ms ' ,
' validationTime ' => ' 6085.04ms ' ,
' totalTime ' => ' 6094.13ms ' ,
]
// Laravel Validator with XDebug disabled
[ // required|integer
' preparationTime ' => ' 1.33ms ' ,
' validationTime ' => ' 13882.72ms ' ,
' totalTime ' => ' 13884.05ms ' ,
]
// Laravel Validator with XDebug enabled
[ // required|integer
' preparationTime ' => ' 9.33ms ' ,
' validationTime ' => ' 24010.60ms ' ,
' totalTime ' => ' 24019.93ms ' ,
]
したがって、 mighty 、Xdebugが無効になっているLaravel Validatorの約12.5倍高速で、Xdebugが有効になっていると約4倍高速です。
ベンチマークはphpbenchを使用して行われます。これが簡単な概要です:
PHPBench (1.2.6) running benchmarks...
with configuration file: mighty /phpbench.json.dist
with PHP version 8.1.9, xdebug , opcache
MAKS mighty BenchmarksConstraintBench
benchAValidValidatableObject............I4 ✔ Mo305.595074ops/s (±0.75%)
benchAnInvalidValidatableObject.........I4 ✔ Mo326.708522ops/s (±1.02%)
MAKS mighty BenchmarksValidatorBench
benchSingleValidationString.............I4 ✔ Mo0.02212ms (±1.59%)
benchSingleValidationObject.............I4 ✔ Mo0.126929ms (±1.63%)
benchBulkValidationObject...............I4 ✔ Mo9.345847ms (±0.62%)
benchBulkValidationString...............I4 ✔ Mo6.734188ms (±0.40%)
Subjects: 6, Assertions: 6, Failures: 0, Errors: 0
事実:最新のベンチマークの結果は、CIパイプラインにも見られます。CIパイプラインは、各プッシュ/PRでアップスタームに更新されます。
MAKS mighty Rule::setMessageTranslator()
メソッドを使用できます。この方法は、グローバルなメッセージ翻訳者を設定するための便利な方法であり、閉鎖を取得して、RAWメッセージ(プレースホルダーを含む)を引数として取得し、そのメッセージの翻訳バージョンを返す必要があります。mighty MITライセンスに基づいてライセンスされているオープンソースプロジェクトです。
著作権(c)2022 Marwan al-Soltany。無断転載を禁じます。