La dernière bibliothèque de validation dont vous aurez besoin !
Installation
À propos mighty
Démarrage rapide
mVEL
Exemples
Contraintes
Validations
Documentation
Spécification
Journal des modifications
Si vous aimez ce projet et souhaitez soutenir son développement, lui donner un serait apprécié !
puissante démo" style="max-width: 100%;">
composer require marwanalsoltany/ mighty La validation est une tâche courante dans toute application Web. Les données transmises à l'application via des formulaires (ou tout autre type de saisie) doivent toujours être validées par rapport à un ensemble de règles. mighty peut gérer d'une manière simple et expressive.
mighty est une bibliothèque de validation rapide, puissante, robuste et facile à utiliser, avec laquelle il est tout simplement amusant de travailler, elle facilite la validation de toutes les données. Grâce à la puissance du mighty langage d'expression de validation (mVEL), cela ne ressemble à rien de ce que vous avez vu auparavant. Avec son approche de validation et plus de 250 règles intégrées, il n'y a pratiquement rien que vous ne puissiez valider, de manière très expressive et compacte. En termes simples, la validation sous stéroïdes est mighty ! C'est en effet la dernière bibliothèque de validation dont vous aurez besoin.
mighty propose plusieurs approches différentes pour valider les données. Le cas d'utilisation le plus courant consiste à valider les données entrantes via des requêtes HTTP, mais cela ne se limite bien sûr pas à cela ; mighty fournit également des attributs sous forme de contraintes pour valider facilement des modèles et/ou tout type d'objets.
mighty comprend une grande variété de règles de validation pratiques que vous pouvez appliquer comme une seule règle ou les combiner les unes avec les autres à l'aide d'opérateurs pour créer des validations encore plus complexes.
Pour en savoir plus sur les puissantes fonctionnalités de validation de mighty , allons droit au but et examinons quelques exemples :
Validation des données du formulaire à l'aide de 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 Validation de l'état d'un objet à l'aide des attributs 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 wrongUn exemple de résultat de la validation d'un objet validable ressemblerait à ceci :
// 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. Vérifiez également ValidatableObject et ValidatableObjectChild .
Astuce : D’autres exemples peuvent être trouvés dans la section Exemples.
mighty a le concept d'expression de validation. L'expression de validation dans ses formes les plus simples n'est qu'une chaîne qui décrit la mighty laquelle les données données doivent être validées. Ces chaînes sont basées sur la mighty spécification du langage d'expression de validation (mVEL). mVEL est assez simple, lisible par l'homme et facile à gérer. Il s'agit d'une combinaison de concepts et/ou de spécifications bien établis comme l'algèbre booléenne, les opérateurs bit à bit, JSON et CSV.
Par conséquent, l'expression de validation peut être définie comme une chaîne contenant des règles séparées par des opérateurs au niveau du bit qui construiront une expression qui, une fois évaluée à l'aide de la logique de l'algèbre booléenne , aboutira au résultat final de la validation. Les règles peuvent avoir des arguments, les types de ces arguments peuvent être désignés en utilisant les mêmes règles de types JSON . Une règle peut également avoir plusieurs arguments et les arguments sont séparés par des virgules ( CSV ).
Par exemple, required&string&between:2,255|null est une expression de validation valide, cette expression peut être comprise comme suit :
required Affirme que l'entrée est présente.string Affirme que l'entrée est une chaîne.between:2,255 Affirme que l'entrée est une chaîne d'une longueur comprise entre 2 et 255.null Affirme que l'entrée est nulle. L'expression required&string&between:2,255|null signifie que l'entrée doit être présente ; AND de type chaîne ; ET entre 2 et 255 de longueur ; OU nul. Il s'agit donc d'une chaîne nullable qui, lorsqu'elle n'est pas nulle, doit comporter entre 2 et 255 caractères.
Disons que l'entrée était " mighty is Awesome!" , le résultat de l'expression required&string&between:2,255|null par rapport à cette entrée serait 1&1&1|0 ce qui donnera 1 qui est true , si l'entrée était null , le résultat serait 0&0&0|1 = 1 , si l'entrée était X le résultat serait 0&0&0|0 = 0 , etc...
Contrairement à d'autres implémentations de validations, le concept d' algèbre booléenne utilisant des opérateurs au niveau du bit , donne la possibilité de construire des validations complexes très lisibles et compactes tout en gardant les règles à un nombre minimum, en réutilisant la logique existante de manière inversée ou composée, et enfin en gardant le base de code aussi SÈCHE que possible. Les avantages peuvent être résumés dans les points suivants :
~ ) pour faire exactement le contraire de ce qu'elle fait normalement.& ), d'une opération OR (en utilisant | ) ou d'une opération XOR (en utilisant ^ ), de deux règles simples ou plus.( ) et CLOSE (en utilisant ) ).? ).! ).[macro] .De plus, le concept JSON garantit la sécurité des types de données des arguments, et le concept CSV garantit que la liste des arguments a des règles d'analyse claires.
Le plus sympa, c'est que vous n'avez pas besoin de mémoriser toutes les règles ni la syntaxe du Validation Expression Language. La classe Validation est une interface fluide qui peut être utilisée pour créer une expression de validation. Il connaît toutes mighty règles disponibles et prend entièrement en charge IDE-Intellisense pour le rendre aussi simple que possible. Par exemple:
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 ();
Fait : Il faut généralement plus de mots pour décrire ce que fait une expression de validation que l'expression de validation elle-même !
Voici quelques exemples de scénarios du monde réel :
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);
Astuce : lorsque vous fournissez des remplacements de message au Validator::class , il est conseillé d'utiliser le RuleValidation::class pour définir les clés du tableau. Cette classe contient tous mighty noms de règles intégrées sous forme de constantes de classe.
Le validateur peut être étendu de trois manières :
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) ' ,
],
],
];
Astuce : consultez les rules , aliases et macros par défaut du Validator pour voir plus d'exemples.
mighty se compose de plus de 250 règles/attributs qui peuvent être utilisés pour valider n'importe quelle donnée ou valeur de classe, constante de classe, propriété et méthode.
Les attributs sont divisés en trois groupes principaux :
Les attributs de contrainte générique sont situés sous l'espace de noms MAKS mighty Validation .
Ce groupe se compose actuellement d'un seul attribut ; c'est l'attribut Constraint . Cet attribut prend une expression de validation pour valider les données auxquelles il est appliqué. C'est également la classe de base pour tous les autres attributs.
Les attributs de contrainte spéciale sont situés sous l'espace de noms MAKS mighty ValidationConstraint .
Ce groupe contient des attributs qui effectuent une tâche spécifique disponible uniquement dans le contexte des attributs. Il se compose des attributs suivants :
Rule : Cet attribut est utilisé pour valider n'importe quelle donnée à l'aide d'une seule règle de validation. Il s'agit également de la classe de base pour tous les attributs du groupe d'attributs de contrainte de règle.Callback : Cet attribut est utilisé pour valider n'importe quelle donnée à l'aide d'une fonction de rappel.Valid : Cet attribut est utilisé pour valider la validité d'un objet validable.Shape : Cet attribut est utilisé pour valider la forme d'un tableau ou d'un objet. Notez qu'il s'agit du seul attribut qui valide un ensemble de valeurs (données structurées) plutôt qu'une valeur unique.Compound : cet attribut est utilisé pour combiner un ensemble de contraintes pour créer une expression de validation. Les contraintes peuvent être combinées à l'aide de n'importe quel opérateur, et peuvent également avoir un comportement. Il sert de moyen orienté objet pour créer une expression de validation.
Remarque : Notez que les contraintes dont l'utilisation est autorisée avec les attributs Shape::class et Compound::class doivent être des instances réelles de Constraint::class , Rule::class ou Compound::class . Les Callback::class , Valid::class ou Shape::class du groupe d'attributs de contraintes spéciales ne sont PAS autorisés. Si vous avez besoin de cette fonctionnalité, ouvrez un ticket et nous discuterons de sa mise en œuvre
Les attributs de contrainte de règle sont situés sous l'espace de noms MAKS mighty ValidationConstraintRule .
Ce groupe contient des attributs basés sur une seule règle de validation. Il comprend la plupart des attributs mighty . Reportez-vous à la section Validations pour la liste complète.
mighty a une énorme liste de contraintes intégrées, il est vraiment rare que vous ayez besoin d'autre chose que ce que mighty fournit. Néanmoins, il est parfois nécessaire d'avoir une contrainte personnalisée. Voici comment y parvenir :
<?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
}
}
Remarque : Les contraintes personnalisées sont considérées comme faisant partie du groupe d'attributs de contraintes spéciales (c'est-à-dire qu'elles ne peuvent pas être utilisées avec/à l'intérieur des contraintes Shape::class et Compound::class ).
Le tableau suivant répertorie toutes les règles disponibles, y compris leurs équivalents d'attribut et de méthode :
Validation::classConstraint::class et Constraint/Rule/*| Non. | Règle | Description | Attribut / Méthode |
|---|---|---|---|
| 001 | Nom : nullUtilisation : null | Affirme que l'entrée est nulle. | Attribut:NullConstraint::classMéthode: Validation::null() |
| 002 | Nom : booleanUtilisation : boolean | Affirme que l'entrée est un booléen. | Attribut:Boolean::classMéthode: Validation::boolean() |
| 003 | Nom : integerUtilisation : integer | Affirme que l'entrée est un entier. | Attribut:Integer::classMéthode: Validation::integer() |
| 004 | Nom : floatUtilisation : float | Affirme que l'entrée est un flottant. | Attribut:FloatConstraint::classMéthode: Validation::float() |
| 005 | Nom : numericUtilisation : numeric | Affirme que l'entrée est numérique. | Attribut:NumericConstraint::classMéthode: Validation::numeric() |
| 006 | Nom : stringUtilisation : string | Affirme que l'entrée est une chaîne. | Attribut:StringConstraint::classMéthode: Validation::string() |
| 007 | Nom : scalarUtilisation : scalar | Affirme que l'entrée est un scalaire. | Attribut:Scalar::classMéthode: Validation::scalar() |
| 008 | Nom : arrayUtilisation : array | Affirme que l'entrée est un tableau. | Attribut:ArrayConstraint::classMéthode: Validation::array() |
| 009 | Nom : objectUtilisation : object | Affirme que l'entrée est un objet. | Attribut:ObjectConstraint::classMéthode: Validation::object() |
| 010 | Nom : callableUtilisation : callable | Affirme que l'entrée est appelable. | Attribut:CallableConstraint::classMéthode: Validation::callable() |
| 011 | Nom : iterableUtilisation : iterable | Affirme que l'entrée est un itérable. | Attribut:IterableConstraint::classMéthode: Validation::iterable() |
| 012 | Nom : countableUtilisation : countable | Affirme que l'entrée est un dénombrable. | Attribut:Countable::classMéthode: Validation::countable() |
| 013 | Nom : resourceUtilisation : resource | Affirme que l'entrée est une ressource. | Attribut:ResourceConstraint::classMéthode: Validation::resource() |
| 014 | Nom : typeUtilisation : type:'["int","float"]' | Affirme que l'entrée est l'un des types donnés. | Attribut:Type::classMéthode: Validation::type(string|array $type) |
| 015 | Nom : type.debugUtilisation : type.debug:string | Affirme que l'entrée est du type donné à l'aide de get_debug_type(). | Attribut:TypeDebug::classMéthode: Validation::typeDebug(string $type) |
| 016 | Nom : alphaUtilisation : alpha | Affirme que l'entrée est constituée uniquement de caractères alphabétiques. | Attribut:Alpha::classMéthode: Validation::alpha() |
| 017 | Nom : alnumUtilisation : alnum | Affirme que l'entrée est constituée uniquement de caractères alphanumériques. | Attribut:Alnum::classMéthode: Validation::alnum() |
| 018 | Nom : lowerUtilisation : lower | Affirme que l'entrée est constituée uniquement de caractères minuscules. | Attribut:Lower::classMéthode: Validation::lower() |
| 019 | Nom : upperUtilisation : upper | Affirme que l'entrée est constituée uniquement de caractères majuscules. | Attribut:Upper::classMéthode: Validation::upper() |
| 020 | Nom : cntrlUtilisation : cntrl | Affirme que l'entrée est constituée uniquement de caractères de contrôle. | Attribut:Cntrl::classMéthode: Validation::cntrl() |
| 021 | Nom : spaceUtilisation : space | Affirme que l'entrée est constituée uniquement de caractères d'espacement. | Attribut:Space::classMéthode: Validation::space() |
| 022 | Nom : punctUtilisation : punct | Affirme que l'entrée est constituée uniquement de caractères de ponctuation. | Attribut:Punct::classMéthode: Validation::punct() |
| 023 | Nom : graphUtilisation : graph | Affirme que l'entrée est constituée uniquement de caractères graphiques (caractères qui créent une sortie visible). | Attribut:Graph::classMéthode: Validation::graph() |
| 024 | Nom : printUtilisation : print | Affirme que l'entrée est constituée uniquement de caractères imprimables. | Attribut:PrintConstraint::classMéthode: Validation::print() |
| 025 | Nom : digitUtilisation : digit | Affirme que l'entrée est constituée uniquement de chiffres (caractères numériques). | Attribut:Digit::classMéthode: Validation::digit() |
| 026 | Nom : xdigitUtilisation : xdigit | Affirme que l'entrée représente des chiffres hexadécimaux. | Attribut:Xdigit::classMéthode: Validation::xdigit() |
| 027 | Nom : booleanLikeUtilisation : booleanLike | Affirme que l'entrée est une valeur qui peut être analysée comme un booléen (TRUE : true, "true", "1", "on", "yes" ; FALSE : false, "false", "0", "off" , "non", "", nul). | Attribut:BooleanLike::classMéthode: Validation::booleanLike() |
| 028 | Nom : integerLikeUtilisation : integerLike:0,100 | Affirme que l'entrée est une valeur qui peut être analysée comme un entier dans la plage spécifiée. | Attribut:IntegerLike::classMéthode: Validation::integerLike(int $min = PHP_INT_MIN, int $max = PHP_INT_MAX) |
| 029 | Nom : integerLike.allowOctalUtilisation : integerLike.allowOctal:0,100 | Affirme que l'entrée est une valeur qui peut être analysée comme un entier dans la plage spécifiée et peut être en notation octale. | Attribut:IntegerLikeAllowOctal::classMéthode: Validation::integerLikeAllowOctal(int $min = PHP_INT_MIN, int $max = PHP_INT_MAX) |
| 030 | Nom : integerLike.allowHexUtilisation : integerLike.allowHex:0,100 | Affirme que l'entrée est une valeur qui peut être analysée comme un entier dans la plage spécifiée et peut être en notation hexadécimale. | Attribut:IntegerLikeAllowHex::classMéthode: Validation::integerLikeAllowHex(int $min = PHP_INT_MIN, int $max = PHP_INT_MAX) |
| 031 | Nom : floatLikeUtilisation : floatLike:1.0,100.0 | Affirme que l'entrée est une valeur qui peut être analysée comme un flottant dans la plage spécifiée. | Attribut:FloatLike::classMéthode: Validation::floatLike(float $min = PHP_FLOAT_MIN, float $max = PHP_FLOAT_MAX) |
| 032 | Nom : floatLike.allowThousandsUtilisation : floatLike.allowThousands:1.0,100.0 | Affirme que l'entrée est une valeur qui peut être analysée comme un flottant dans la plage spécifiée. | Attribut:FloatLikeAllowThousands::classMéthode: Validation::floatLikeAllowThousands(float $min = PHP_FLOAT_MIN, float $max = PHP_FLOAT_MAX) |
| 033 | Nom : regexpUtilisation : regexp:"/[az]/i" | Affirme que l'entrée correspond à une expression régulière compatible Perl. | Attribut:Regexp::classMéthode: Validation::regexp(string $pattern) |
| 034 | Nom : ipUtilisation : ip | Affirme que l'entrée est une adresse IP. | Attribut:Ip::classMéthode: Validation::ip() |
| 035 | Nom : ip.v4Utilisation : ip.v4 | Affirme que l'entrée est une adresse IPv4. | Attribut:IpV4::classMéthode: Validation::ipV4() |
| 036 | Nom : ip.v6Utilisation : ip.v6 | Affirme que l'entrée est une adresse IPv6. | Attribut:IpV6::classMéthode: Validation::ipV6() |
| 037 | Nom : ip.notReservedUtilisation : ip.notReserved | Affirme que l’entrée est une adresse IP ne se trouvant pas dans la plage d’adresses IP réservées. | Attribut:IpNotReserved::classMéthode: Validation::ipNotReserved() |
| 038 | Nom : ip.notPrivateUtilisation : ip.notPrivate | Affirme que l'entrée est une adresse IP ne se trouvant pas dans la plage d'adresses IP privées. | Attribut:IpNotPrivate::classMéthode: Validation::ipNotPrivate() |
| 039 | Nom : macUtilisation : mac | Affirme que l'entrée est une adresse MAC. | Attribut:Mac::classMéthode: Validation::mac() |
| 040 | Nom : urlUtilisation : url | Affirme que l'entrée est une URL. | Attribut:Url::classMéthode: Validation::url() |
| 041 | Nom : url.withPathUtilisation : url.withPath | Affirme que l'entrée est une URL qui contient un chemin. | Attribut:UrlWithPath::classMéthode: Validation::urlWithPath() |
| 042 | Nom : url.withQueryUtilisation : url.withQuery | Affirme que l'entrée est une URL qui contient une requête. | Attribut:UrlWithQuery::classMéthode: Validation::urlWithQuery() |
| 043 | Nom : emailUtilisation : email | Affirme que l'entrée est une adresse e-mail. | Attribut:Email::classMéthode: Validation::email() |
| 044 | Nom : email.withUnicodeUtilisation : email.withUnicode | Affirme que l'entrée est une adresse e-mail (Unicode autorisé). | Attribut:EmailWithUnicode::classMéthode: Validation::emailWithUnicode() |
| 045 | Nom : domainUtilisation : domain | Affirme que l'entrée est un domaine. | Attribut:Domain::classMéthode: Validation::domain() |
| 046 | Nom : domain.isActiveUtilisation : domain.isActive | Affirme que l'entrée est un domaine actif. Fonctionne avec les domaines et les e-mails. | Attribut:DomainIsActive::classMéthode: Validation::domainIsActive() |
| 047 | Nom : fileUtilisation : file | Affirme que l'entrée est un fichier (peut être un fichier, un lien ou un répertoire). | Attribut:File::classMéthode: Validation::file() |
| 048 | Nom : file.isFileUtilisation : file.isFile | Affirme que l'entrée est un fichier. | Attribut:FileIsFile::classMéthode: Validation::fileIsFile() |
| 049 | Nom : file.isLinkUtilisation : file.isLink | Affirme que l'entrée est un lien. | Attribut:FileIsLink::classMéthode: Validation::fileIsLink() |
| 050 | Nom : file.isDirectoryUtilisation : file.isDirectory | Affirme que l'entrée est un répertoire. | Attribut:FileIsDirectory::classMéthode: Validation::fileIsDirectory() |
| 051 | Nom : file.isExecutableUtilisation : file.isExecutable | Affirme que l'entrée est un fichier et qu'elle est exécutable. | Attribut:FileIsExecutable::classMéthode: Validation::fileIsExecutable() |
| 052 | Nom : file.isWritableUtilisation : file.isWritable | Affirme que l'entrée est un fichier et qu'elle est accessible en écriture. | Attribut:FileIsWritable::classMéthode: Validation::fileIsWritable() |
| 053 | Nom : file.isReadableUtilisation : file.isReadable | Affirme que l'entrée est un fichier et qu'elle est lisible. | Attribut:FileIsReadable::classMéthode: Validation::fileIsReadable() |
| 054 | Nom : file.isUploadedUtilisation : file.isUploaded | Affirme que l'entrée est un fichier téléchargé via HTTP POST. | Attribut:FileIsUploaded::classMéthode: Validation::fileIsUploaded() |
| 055 | Nom : file.sizeUtilisation : file.size:1024 | Affirme que l'entrée est un fichier et que la taille est égale à la taille donnée en octets. | Attribut:FileSize::classMéthode: Validation::fileSize(int $sizeInBytes) |
| 056 | Nom : file.size.lteUtilisation : file.size.lte:1024 | Affirme que l'entrée est un fichier et que sa taille est inférieure ou égale à la taille donnée en octets. | Attribut:FileSizeLte::classMéthode: Validation::fileSizeLte(int $sizeInBytes) |
| 057 | Nom : file.size.gteUtilisation : file.size.gte:1024 | Affirme que l'entrée est un fichier et que sa taille est supérieure ou égale à la taille donnée en octets. | Attribut:FileSizeGte::classMéthode: Validation::fileSizeGte(int $sizeInBytes) |
| 058 | Nom : file.dirnameUtilisation : file.dirname:/path/to/dir | Affirme que l'entrée est un fichier et que son nom de répertoire est égal au nom de répertoire donné. | Attribut:FileDirname::classMéthode: Validation::fileDirname(string $dirname) |
| 059 | Nom : file.basenameUtilisation : file.basename:file.ext | Affirme que l'entrée est un fichier et que son nom de base est égal au nom de base donné. | Attribut:FileBasename::classMéthode: Validation::fileBasename(string $basename) |
| 060 | Nom : file.filenameUtilisation : file.filename:file | Affirme que l'entrée est un fichier et que son nom de fichier est égal au nom de fichier donné. | Attribut:FileFilename::classMéthode: Validation::fileFilename(string $filename) |
| 061 | Nom : file.extensionUtilisation : file.extension:ext | Affirme que l'entrée est un fichier et que son extension est égale à l'extension donnée. | Attribut:FileExtension::classMéthode: Validation::fileExtension(string $extension) |
| 062 | Nom : file.mimeUtilisation : file.mime:text/plain | Affirme que l'entrée est un fichier et que son type MIME est l'un des types MIME donnés. | Attribut:FileMime::classMéthode: Validation::fileMime(string|array $mine) |
| 063 | Nom : imageUtilisation : image | Affirme que l'entrée est un fichier image (jpg, jpeg, png, gif, bmp, svg ou webp). | Attribut:Image::classMéthode: Validation::image() |
| 064 | Nom : image.widthUtilisation : image.width:1920 | Affirme que l'entrée est une image et que sa largeur est égale à la largeur donnée en pixels. | Attribut:ImageWidth::classMéthode: Validation::imageWidth(int $width) |
| 065 | Nom : image.width.lteUtilisation : image.width.lte:1920 | Affirme que l'entrée est une image et que sa largeur est inférieure ou égale à la largeur donnée en pixels. | Attribut:ImageWidthLte::classMéthode: Validation::imageWidthLte(int $width) |
| 066 | Nom : image.width.gteUtilisation : image.width.gte:1920 | Affirme que l'entrée est une image et que sa largeur est supérieure ou égale à la largeur donnée en pixels. | Attribut:ImageWidthGte::classMéthode: Validation::imageWidthGte(int $width) |
| 067 | Nom : image.heightUtilisation : image.height:1080 | Affirme que l'entrée est une image et que sa hauteur est égale à la hauteur donnée en pixels. | Attribut:ImageHeight::classMéthode: Validation::imageHeight(int $height) |
| 068 | Nom : image.height.lteUtilisation : image.height.lte:1080 | Affirme que l'entrée est une image et que sa hauteur est inférieure ou égale à la hauteur donnée en pixels. | Attribut:ImageHeightLte::classMéthode: Validation::imageHeightLte(int $height) |
| 069 | Nom : image.height.gteUtilisation : image.height.gte:1080 | Affirme que l'entrée est une image et que sa hauteur est supérieure ou égale à la hauteur donnée en pixels. | Attribut:ImageHeightGte::classMéthode: Validation::imageHeightGte(int $height) |
| 070 | Nom : image.dimensionsUtilisation : image.dimensions:1920,1080,== | Affirme que l'entrée est une image et que ses dimensions sont inférieures, égales ou supérieures à la largeur et à la hauteur données en pixels. | Attribut:ImageDimensions::classMéthode: Validation::imageDimensions(int $width, int $height, string $operator = '==') |
| 071 | Nom : image.ratioUtilisation : image.ratio:16:9 | Affirme que l'entrée est une image et que son rapport hauteur/largeur est égal au rapport donné (le rapport doit être spécifié sous forme de fraction comme "16/9"). | Attribut:ImageRatio::classMéthode: Validation::imageRatio(string $ratio) |
| 072 | Nom : ifUtilisation : if:7,7,== | Vérifie la condition entre le premier argument et le deuxième argument, l'opérateur de condition peut également être spécifié comme troisième argument. | Attribut:IfConstraint::classMéthode: Validation::if(mixed $actual, mixed $expected = true, string $operator = '==') |
| 073 | Nom : if.eqUtilisation : if.eq:3,3 | Vérifie la condition entre le premier argument et le deuxième argument, l'opérateur de condition est "==". | Attribut:IfEq::classMéthode: Validation::ifEq(mixed $actual, mixed $expected) |
| 074 | Nom : if.neqUtilisation : if.neq:1,2 | Vérifie la condition entre le premier argument et le deuxième argument, l'opérateur de condition est "!=". | Attribut:IfNeq::classMéthode: Validation::ifNeq(mixed $actual, mixed $expected) |
| 075 | Nom : if.idUtilisation : if.id:3,3 | Vérifie la condition entre le premier argument et le deuxième argument, l'opérateur de condition est "===". | Attribut:IfId::classMéthode: Validation::ifId(mixed $actual, mixed $expected) |
| 076 | Nom : if.nidUtilisation : if.nid:1,2 | Vérifie la condition entre le premier argument et le deuxième argument, l'opérateur de condition est "!==". | Attribut:IfNid::classMéthode: Validation::ifNid(mixed $actual, mixed $expected) |
| 077 | Nom : if.gtUtilisation : if.gt:2,1 | Vérifie la condition entre le premier argument et le deuxième argument, l'opérateur de condition est ">". | Attribut:IfGt::classMéthode: Validation::ifGt(mixed $actual, mixed $expected) |
| 078 | Nom : if.gteUtilisation : if.gte:2,2 | Vérifie la condition entre le premier argument et le deuxième argument, l'opérateur de condition est ">=". | Attribut:IfGte::classMéthode: Validation::ifGte(mixed $actual, mixed $expected) |
| 079 | Nom : if.ltUtilisation : if.lt:1,2 | Vérifie la condition entre le premier argument et le deuxième argument, l'opérateur de condition est "<". | Attribut:IfLt::classMéthode: Validation::ifLt(mixed $actual, mixed $expected) |
| 080 | Nom : if.lteUtilisation : if.lte:1,2 | Vérifie la condition entre le premier argument et le deuxième argument, l'opérateur de condition est "<=". | Attribut:IfLte::classMéthode: Validation::ifLte(mixed $actual, mixed $expected) |
| 081 | Nom : emptyUtilisation : empty | Affirme que l'entrée est vide à l'aide de la construction de langage empty() (est vide, c'est-à-dire une chaîne vide, un tableau vide, false, null ou 0). | Attribut:EmptyConstraint::classMéthode: Validation::empty() |
| 082 | Nom : requiredUtilisation : required | Affirme que l'entrée est requise (n'est pas vide, c'est-à-dire qu'il ne s'agit pas d'une chaîne vide ou nulle). | Attribut:Required::classMéthode: Validation::required() |
| 083 | Nom : allowedUtilisation : allowed | Affirme que l'entrée est autorisée (peut être vide ou avoir n'importe quelle valeur, les chaînes nulles et vides sont considérées comme des valeurs valides). | Attribut:Allowed::classMéthode: Validation::allowed() |
| 084 | Nom : forbiddenUtilisation : forbidden | Affirme que l'entrée est interdite (est nulle ou absente). | Attribut:Forbidden::classMéthode: Validation::forbidden() |
| 085 | Nom : acceptedUtilisation : accepted | Affirme que l'entrée est acceptée (est égal à : "on", "oui", "ouais", "oui", "yo", "ok", "ok", "oui", 1 ou "1", vrai ou " true"), notez que les chaînes sont traitées sans tenir compte de la casse. | Attribut:Accepted::classMéthode: Validation::accepted() |
| 086 | Nom : declinedUtilisation : declined | Affirme que l'entrée est refusée (égal à : "off", "no", "not", "nope", "neh", "nay", 0 ou "0", false ou "false") notez que les chaînes sont traitées sans tenir compte de la casse. | Attribut:Declined::classMéthode: Validation::declined() |
| 087 | Nom : bitUtilisation : bit | Affirme que l'entrée est un bit (est égal à : 1 ou "1", vrai ; 0 ou "0", faux). | Attribut:Bit::classMéthode: Validation::bit() |
| 088 | Nom : bit.isOnUtilisation : bit.isOn | Affirme que l'entrée est un bit activé (égal à : vrai, 1 ou "1"). | Attribut:BitIsOn::classMéthode: Validation::bitIsOn() |
| 089 | Nom : bit.isOffUtilisation : bit.isOff | Affirme que l'entrée est un bit désactivé (égal à : faux, 0 ou "0"). | Attribut:BitIsOff::classMéthode: Validation::bitIsOff() |
| 090 | Nom : equalsUtilisation : equals:value | Affirme que l'entrée est égale à la valeur donnée. Fonctionne avec les types scalaires et null. L'opérateur de comparaison est "==". | Attribut:Equals::classMéthode: Validation::equals(string|int|float|bool|null $value) |
| 091 | Nom : matchesUtilisation : matches:'"/^[a-zA-Z0-9]+$/"' | Affirme que l'entrée correspond au modèle donné. Fonctionne uniquement avec des chaînes. | Attribut:Matches::classMéthode: Validation::matches(string $pattern) |
| 092 | Nom : inUtilisation : in:val1,val2,... | Affirme que l'entrée se trouve dans les valeurs données. Fonctionne avec les types scalaires et null. | Attribut:In::classMéthode: Validation::in(string|int|float|bool|null ...$values) |
| 093 | Nom : countUtilisation : count:3 | Affirme que le nombre d'entrées est égal à la valeur donnée. Fonctionne avec tous les types de données (null : 0 ; booléen : 0 ou 1 ; float/integer : valeur numérique ; chaîne : nombre de caractères ; tableau/dénombrable : nombre d'éléments ; objet : nombre de propriétés accessibles). | Attribut:Count::classMéthode: Validation::count(int $count) |
| 094 | Nom : minUtilisation : min:3 | Affirme que le nombre d’entrées est supérieur ou égal à la valeur donnée. Fonctionne avec tous les types de données (null : 0 ; booléen : 0 ou 1 ; float/integer : valeur numérique ; chaîne : nombre de caractères ; tableau/dénombrable : nombre d'éléments ; objet : nombre de propriétés accessibles). | Attribut:Min::classMéthode: Validation::min(int|float $count) |
| 095 | Nom : maxUtilisation : max:3 | Affirme que le nombre d’entrées est inférieur ou égal à la valeur donnée. Fonctionne avec tous les types de données (null : 0 ; booléen : 0 ou 1 ; float/integer : valeur numérique ; chaîne : nombre de caractères ; tableau/dénombrable : nombre d'éléments ; objet : nombre de propriétés accessibles). | Attribut:Max::classMéthode: Validation::max(int|float $count) |
| 096 | Nom : betweenUtilisation: between:3,7 | Affirme que le nombre d'entrées se situe entre les valeurs données. Fonctionne avec tous les types de données (null : 0 ; booléen : 0 ou 1 ; float/integer : valeur numérique ; chaîne : nombre de caractères ; tableau/dénombrable : nombre d'éléments ; objet : nombre de propriétés accessibles). | Attribut:Between::classMéthode: Validation::between(int|float $min, int|float $max) |
| 097 | Nom : number.isPositiveUtilisation : number.isPositive | Affirme que l'entrée est un nombre positif. | Attribut:NumberIsPositive::classMéthode: Validation::numberIsPositive() |
| 098 | Nom : number.isNegativeUtilisation : number.isNegative | Affirme que l'entrée est un nombre négatif. | Attribut:NumberIsNegative::classMéthode: Validation::numberIsNegative() |
| 099 | Nom : number.isEvenUtilisation : number.isEven | Affirme que l'entrée est un nombre pair. | Attribut:NumberIsEven::classMéthode: Validation::numberIsEven() |
| 100 | Nom : number.isOddUtilisation : number.isOdd | Affirme que l'entrée est un nombre impair. | Attribut:NumberIsOdd::classMéthode: Validation::numberIsOdd() |
| 101 | Nom : number.isMultipleOfUtilisation : number.isMultipleOf:3 | Affirme que l'entrée est un multiple du nombre donné. | Attribut:NumberIsMultipleOf::classMéthode: Validation::numberIsMultipleOf(float $number) |
| 102 | Nom : number.isFiniteUtilisation : number.isFinite | Affirme que l'entrée est un nombre fini. | Attribut:NumberIsFinite::classMéthode: Validation::numberIsFinite() |
| 103 | Nom : number.isInfiniteUtilisation : number.isInfinite | Affirme que l'entrée est un nombre infini. | Attribut:NumberIsInfinite::classMéthode: Validation::numberIsInfinite() |
| 104 | Nom : number.isNanUtilisation : number.isNan | Affirme que l'entrée n'est pas un nombre. | Attribut:NumberIsNan::classMéthode: Validation::numberIsNan() |
| 105 | Nom : string.charsetUtilisation : string.charset:UTF-8 | Affirme que l'entrée est codée dans l'un des jeux de caractères donnés (alias inclus). La vérification est effectuée en tenant compte de la casse. | Attribut:StringCharset::classMéthode: Validation::stringCharset(string|array $charset) |
| 106 | Nom : string.containsUtilisation : string.contains:substring | Affirme que l'entrée contient la sous-chaîne donnée. Un deuxième argument booléen peut être spécifié pour activer le mode strict (sensible à la casse). | Attribut:StringContains::classMéthode: Validation::stringContains(string $substring, bool $strict = false) |
| 107 | Nom : string.startsWithUtilisation : string.startsWith:substring,1 | Affirme que l'entrée commence par la sous-chaîne donnée. Un deuxième argument booléen peut être spécifié pour activer le mode strict (sensible à la casse). | Attribut:StringStartsWith::classMéthode: Validation::stringStartsWith(string $substring, bool $strict = false) |
| 108 | Nom : string.endsWithUtilisation : string.endsWith:substring,0 | Affirme que l'entrée se termine par la sous-chaîne donnée. Un deuxième argument booléen peut être spécifié pour activer le mode strict (sensible à la casse). | Attribut:StringEndsWith::classMéthode: Validation::stringEndsWith(string $substring, bool $strict = false) |
| 109 | Nom : string.lengthUtilisation : string.length:3 | Affirme que l'entrée est une chaîne qui a exactement la longueur donnée. | Attribut:StringLength::classMéthode: Validation::stringLength(int $length) |
| 110 | Nom : string.wordsCountUtilisation : string.wordsCount:3 | Affirme que l'entrée est une chaîne contenant exactement le nombre de mots donné. | Attribut:StringWordsCount::classMéthode: Validation::stringWordsCount(int $count) |
| 111 | Nom : array.hasKeyUtilisation : array.hasKey:key | Affirme que le tableau d'entrée possède la clé donnée. | Attribut:ArrayHasKey::classMéthode: Validation::arrayHasKey(string|int $key) |
| 112 | Nom : array.hasValueUtilisation : array.hasValue:value | Affirme que le tableau d'entrée contient la valeur donnée. Fonctionne avec des types scalaires. | Attribut:ArrayHasValue::classMéthode: Validation::arrayHasValue(mixed $value) |
| 113 | Nom : array.hasDistinctUtilisation : array.hasDistinct:key | Affirme que l'entrée est un tableau multidimensionnel qui contient des valeurs distinctes de la clé donnée. | Attribut:ArrayHasDistinct::classMéthode: Validation::arrayHasDistinct(string|int $key) |
| 114 | Nom : array.isAssociativeUtilisation : array.isAssociative | Affirme que l'entrée est un tableau associatif. | Attribut:ArrayIsAssociative::classMéthode: Validation::arrayIsAssociative() |
| 115 | Nom : array.isSequentialUtilisation : array.isSequential | Affirme que l'entrée est un tableau séquentiel. | Attribut:ArrayIsSequential::classMéthode: Validation::arrayIsSequential() |
| 116 | Nom : array.isUniqueUtilisation : array.isUnique | Affirme que le tableau d'entrée contient des valeurs uniques. Fonctionne uniquement avec des tableaux unidimensionnels. | Attribut:ArrayIsUnique::classMéthode: Validation::arrayIsUnique() |
| 117 | Nom : array.subsetUtilisation : array.subset:'{"a":1,"b":2}' | Affirme que l'entrée est un tableau qui contient le sous-ensemble donné. Notez que cette vérification s'applique uniquement à la première dimension du tableau. | Attribut:ArraySubset::classMéthode: Validation::arraySubset(array $subset) |
| 118 | Nom : object.hasPropertyUtilisation : object.hasProperty:property | Affirme que l'entrée a la propriété donnée. | Attribut:ObjectHasProperty::classMéthode: Validation::objectHasProperty(string $property) |
| 119 | Nom : object.hasMethodUtilisation : object.hasMethod:method | Affirme que l'entrée a la méthode donnée. | Attribut:ObjectHasMethod::classMéthode: Validation::objectHasMethod(string $method) |
| 120 | Nom : object.isStringableUtilisation : object.isStringable | Affirme que l'entrée implémente la méthode __toString(). | Attribut:ObjectIsStringable::classMéthode: Validation::objectIsStringable() |
| 121 | Nom : object.isInstanceOfUtilisation : object.isInstanceOf:NamespaceClass | Affirme que l'entrée est une instance de la classe donnée. | Attribut:ObjectIsInstanceOf::classMéthode: Validation::objectIsInstanceOf(string $classFQN) |
| 122 | Nom : object.isSubclassOfUtilisation : object.isSubclassOf:NamespaceClass | Affirme que l'entrée est une sous-classe de la classe donnée. | Attribut:ObjectIsSubclassOf::classMéthode: Validation::objectIsSubclassOf(string $classFQN) |
| 123 | Nom : serializedUtilisation : serialized | Affirme que l'entrée est une donnée sérialisée PHP valide. | Attribut:Serialized::classMéthode: Validation::serialized() |
| 124 | Nom : jsonUtilisation : json | Affirme que l'entrée est un JSON valide. | Attribut:Json::classMéthode: Validation::json() |
| 125 | Nom : base64Utilisation : base64 | Affirme que l’entrée est une chaîne codée en Base64 valide. | Attribut:Base64::classMéthode: Validation::base64() |
| 126 | Nom : xmlUtilisation : xml | Affirme que l'entrée est un XML valide. | Attribut:Xml::classMéthode: Validation::xml() |
| 127 | Nom : localeUtilisation : locale | Affirme que l'entrée est un identifiant de paramètres régionaux valide (par défaut : [ISO 639-1] ou [ISO 639-1]_[ISO 3166-1 alpha-2], insensible à la casse, l'entrée est canonique avant la vérification (tirets vers les traits de soulignement, pas de points ni de jeu de caractères) strict : [ISO 639-1] ou [ISO 639-1]_[ISO 3166-1 alpha-2], sensible à la casse sans canonisation. | Attribut:Locale::classMéthode: Validation::locale(bool $strict = false) |
| 128 | Nom : languageUtilisation : language | Affirme que l'entrée est un code de langue valide (par défaut : « ISO 639-1 » ; long : « ISO 639-2/T »). | Attribut:Language::classMéthode: Validation::language(bool $long = false) |
| 129 | Nom : countryUtilisation : country | Affirme que l'entrée est un code de pays valide (par défaut : « ISO 3166-1 alpha-2 » ; long : « ISO 3166-1 alpha-3 »). | Attribut:Country::classMéthode: Validation::country(bool $long = false) |
| 130 | Nom : timezoneUtilisation : timezone | Affirme que l'entrée est un identifiant de fuseau horaire valide (par défaut : insensible à la casse ; strict : sensible à la casse). | Attribut:Timezone::classMéthode: Validation::timezone(bool $strict = false) |
| 131 | Nom : datetimeUtilisation : datetime | Affirme que l’entrée est une chaîne/objet datetime valide. | Attribut:Datetime::classMéthode: Validation::datetime() |
| 132 | Nom : datetime.eqUtilisation : datetime.eq:"2015-01-01" | Affirme que l'entrée est égale à la chaîne datetime donnée. | Attribut:DatetimeEq::classMéthode: Validation::datetimeEq(string $datetime) |
| 133 | Nom : datetime.ltUtilisation : datetime.lt:tomorrow | Affirme que l'entrée est une chaîne/un objet datetime inférieur (avant) la chaîne datetime donnée. | Attribut:DatetimeLt::classMéthode: Validation::datetimeLt(string $datetime) |
| 134 | Nom : datetime.lteUtilisation : datetime.lte:tomorrow | Affirme que l'entrée est une chaîne/un objet datetime inférieur (avant) ou égal à la chaîne datetime donnée. | Attribut:DatetimeLte::classMéthode: Validation::datetimeLte(string $datetime) |
| 135 | Nom : datetime.gtUtilisation : datetime.gt:today | Affirme que l'entrée est une chaîne/un objet datetime supérieur (après) la chaîne datetime donnée. | Attribut:DatetimeGt::classMéthode: Validation::datetimeGt(string $datetime) |
| 136 | Nom : datetime.gteUtilisation : datetime.gte:today | Affirme que l'entrée est une chaîne/un objet datetime supérieur (après) ou égal à la chaîne datetime donnée. | Attribut:DatetimeGte::classMéthode: Validation::datetimeGte(string $datetime) |
| 137 | Nom : datetime.birthdayUtilisation : datetime.birthday | Affirme que l'entrée est une chaîne/un objet datetime dont l'anniversaire est aujourd'hui. La saisie doit de préférence être au format « AAAA-MM-JJ ». | Attribut:DatetimeBirthday::classMéthode: Validation::datetimeBirthday() |
| 138 | Nom : datetime.formatUtilisation : datetime.format:"Ymd H:i:s" | Affirme que l'entrée est une date/heure valide avec le format donné. | Attribut:DatetimeFormat::classMéthode: Validation::datetimeFormat(string $format) |
| 139 | Nom : datetime.format.globalUtilisation : datetime.format.global | Affirme que l'entrée ressemble à une chaîne datetime globale valide telle que définie dans la spécification HTML5. | Attribut:DatetimeFormatGlobal::classMéthode: Validation::datetimeFormatGlobal() |
| 140 | Nom : datetime.format.localUtilisation : datetime.format.local | Affirme que l'entrée ressemble à une chaîne datetime locale valide telle que définie dans la spécification HTML5. | Attribut:DatetimeFormatLocal::classMéthode: Validation::datetimeFormatLocal() |
| 141 | Nom : datestampUtilisation : datestamp | Affirme que l'entrée ressemble à un horodatage humain, au format DMY ou MDY, séparé par un point, un tiret ou une barre oblique. | Attribut:Datestamp::classMéthode: Validation::datestamp() |
| 142 | Nom : datestamp.ymdUtilisation : datestamp.ymd | Affirme que l'entrée ressemble à un horodatage humain au format YMD, séparé par un point, un tiret ou une barre oblique. | Attribut:DatestampYmd::classMéthode: Validation::datestampYmd() |
| 143 | Nom : datestamp.dmyUtilisation : datestamp.dmy | Affirme que l'entrée ressemble à un horodatage humain au format DMY, séparé par un point, un tiret ou une barre oblique. | Attribut:DatestampDmy::classMéthode: Validation::datestampDmy() |
| 144 | Nom : datestamp.mdyUtilisation : datestamp.mdy | Affirme que l'entrée ressemble à un horodatage humain au format MDY, séparé par un point, un tiret ou une barre oblique. | Attribut:DatestampMdy::classMéthode: Validation::datestampMdy() |
| 145 | Nom : timestampUtilisation : timestamp | Affirme que l'entrée ressemble à un horodatage humain, au format 24 ou 12 heures avec ou sans secondes. | Attribut:Timestamp::classMéthode: Validation::timestamp() |
| 146 | Nom : timestamp.12Utilisation : timestamp.12 | Affirme que l'entrée ressemble à un horodatage humain, au format 12 heures avec ou sans secondes et AM/PM en option. | Attribut:Timestamp12::classMéthode: Validation::timestamp12() |
| 147 | Nom : timestamp.hmsUtilisation : timestamp.hms | Affirme que l'entrée ressemble à un horodatage humain, au format 24 ou 12 heures avec secondes. | Attribut:TimestampHms::classMéthode: Validation::timestampHms() |
| 148 | Nom : timestamp.hmUtilisation : timestamp.hm | Affirme que l'entrée ressemble à un horodatage humain, au format 24 ou 12 heures sans secondes. | Attribut:TimestampHm::classMéthode: Validation::timestampHm() |
| 149 | Nom : timestamp.msUtilisation : timestamp.ms | Affirme que l'entrée ressemble à un horodatage humain, contenant uniquement des minutes et des secondes. | Attribut:TimestampMs::classMéthode: Validation::timestampMs() |
| 150 | Nom : calender.dayUtilisation : calender.day | Affirme que l'entrée ressemble à un jour du calendrier en plan ou en format long ("Lun" ou "Lundi"). | Attribut:CalenderDay::classMéthode: Validation::calenderDay() |
| 151 | Nom : calender.monthUtilisation : calender.month | Affirme que l'entrée ressemble à un mois calendaire au format plan ou long ("Jan" ou "Janvier"). | Attribut:CalenderMonth::classMéthode: Validation::calenderMonth() |
| 152 | Nom : usernameUtilisation : username | Affirme que l'entrée est un nom d'utilisateur valide (entre 4 et 32 caractères, composé de lettres dans tous les cas, éventuellement de chiffres, éventuellement de l'un des caractères suivants "-_." (non consécutifs), et doit toujours commencer par une lettre et se terminer avec une lettre ou un chiffre). | Attribut:Username::classMéthode: Validation::username() |
| 153 | Nom : passwordUtilisation : password | Affirme que l'entrée est un mot de passe valide (minimum 8 caractères, composé d'au moins une lettre minuscule et d'une lettre majuscule, d'au moins un chiffre, d'au moins un caractère spécial et éventuellement d'un espace). | Attribut:Password::classMéthode: Validation::password() |
| 154 | Nom : uuidUtilisation : uuid | Affirme que l’entrée est un UUID valide. La version (v1/v2/v3/v4/v5) peut être spécifiée pour affiner le modèle. | Attribut:Uuid::classMéthode: Validation::uuid(string|int|null $version = null) |
| 155 | Nom : asciiUtilisation : ascii | Affirme que l'entrée est une chaîne contenant uniquement des caractères ASCII (chaîne compatible ASCII). | Attribut:Ascii::classMéthode: Validation::ascii() |
| 156 | Nom : slugUtilisation : slug | Affirme que l’entrée est un slug valide. | Attribut:Slug::classMéthode: Validation::slug() |
| 157 | Nom : metaUtilisation : meta | Affirme que l'entrée est une chaîne contenant uniquement des méta-caractères (caractères spéciaux) (c'est-à-dire "@, #, $, ..."). | Attribut:Meta::classMéthode: Validation::meta() |
| 158 | Nom : textUtilisation : text | Affirme que l'entrée est une chaîne contenant des lettres et des signes de ponctuation de n'importe quelle langue. | Attribut:Text::classMéthode: Validation::text() |
| 159 | Nom : wordsUtilisation : words | Affirme que l'entrée est une chaîne contenant uniquement des mots et des espaces sans aucun autre caractère. | Attribut:Words::classMéthode: Validation::words() |
| 160 | Nom : spacelessUtilisation : spaceless | Affirme que l'entrée est une chaîne ne contenant aucun caractère d'espacement. | Attribut:Spaceless::classMéthode: Validation::spaceless() |
| 161 | Nom : emojiUtilisation : emoji | Affirme que l'entrée contient un emoji. | Attribut:Emoji::classMéthode: Validation::emoji() |
| 162 | Nom : romanUtilisation : roman | Affirme que l'entrée est un nombre romain valide. | Attribut:Roman::classMéthode: Validation::roman() |
| 163 | Nom : phoneUtilisation : phone | Affirme que l'entrée est un numéro de téléphone valide (prend en charge : l'Amérique du Nord, l'Europe et la plupart des pays d'Asie et du Moyen-Orient). | Attribut:Phone::classMéthode: Validation::phone() |
| 164 | Nom : geolocationUtilisation : geolocation | Affirme que l’entrée est une géolocalisation valide (combinaison de coordonnées de latitude et de longitude). | Attribut:Geolocation::classMéthode: Validation::geolocation() |
| 165 | Nom : versionUtilisation : version | Affirme que l'entrée est un numéro de version sémantique valide. | Attribut:Version::classMéthode: Validation::version() |
| 166 | Nom : amountUtilisation : amount | Affirme que l'entrée contient uniquement des nombres, un point décimal facultatif (virgule ou point) et un moins facultatif (utilisé pour les sommes d'argent par exemple). | Attribut:Amount::classMéthode: Validation::amount() |
| 167 | Nom : amount.dollarUtilisation : amount.dollar | Affirme que l'entrée est un montant en USD correctement formaté, où le point décimal et le séparateur de milliers sont facultatifs. | Attribut:AmountDollar::classMéthode: Validation::amountDollar() |
| 168 | Nom : amount.euroUtilisation : amount.euro | Affirme que l'entrée est un montant d'EUR correctement formaté, où le point décimal et le séparateur de milliers sont facultatifs. | Attribut:AmountEuro::classMéthode: Validation::amountEuro() |
| 169 | Nom : colorUtilisation : color | Affirme que l'entrée est une couleur CSS valide (mot-clé « lâche », HEX, HEX-Alpha, RVB, RGBA, RVB « nouvelle syntaxe », HSL, HSLA, HSL « nouvelle syntaxe »). | Attribut:Color::classMéthode: Validation::color() |
| 170 | Nom : color.hexUtilisation : color.hex | Affirme que l'entrée est une couleur CSS HEX valide. | Attribut:ColorHex::classMéthode: Validation::colorHex() |
| 171 | Nom : color.hexShortUtilisation : color.hexShort | Affirme que l'entrée est une couleur CSS 3-Char-HEX valide. | Attribut:ColorHexShort::classMéthode: Validation::colorHexShort() |
| 172 | Nom : color.hexLongUtilisation : color.hexLong | Affirme que l'entrée est une couleur CSS 6-Char-HEX valide. | Attribut:ColorHexLong::classMéthode: Validation::colorHexLong() |
| 173 | Nom : color.hexAlphaUtilisation : color.hexAlpha | Affirme que l'entrée est une couleur CSS HEX-Alpha (4 ou 8 caractères) valide. | Attribut:ColorHexAlpha::classMéthode: Validation::colorHexAlpha() |
| 174 | Nom : color.rgbUtilisation : color.rgb | Affirme que l'entrée est une couleur CSS RVB valide. | Attribut:ColorRgb::classMéthode: Validation::colorRgb() |
| 175 | Nom : color.rgbaUtilisation : color.rgba | Affirme que l'entrée est une couleur CSS RGBA valide. | Attribut:ColorRgba::classMéthode: Validation::colorRgba() |
| 176 | Nom : color.rgb.newUtilisation : color.rgb.new | Affirme que l’entrée est une couleur RVB CSS4 valide. | Attribut:ColorRgbNew::classMéthode: Validation::colorRgbNew() |
| 177 | Nom : color.hslUtilisation : color.hsl | Affirme que l’entrée est une couleur CSS HSL valide. | Attribut:ColorHsl::classMéthode: Validation::colorHsl() |
| 178 | Nom : color.hslaUtilisation : color.hsla | Affirme que l'entrée est une couleur CSS HSLA valide. | Attribut:ColorHsla::classMéthode: Validation::colorHsla() |
| 179 | Nom: color.hsl.newUtilisation: color.hsl.new | Affirme que l'entrée est une couleur HSL CSS4 valide. | Attribut:ColorHslNew::classMéthode: Validation::colorHslNew() |
| 180 | Nom: color.keywordUtilisation: color.keyword | Affirme que l'entrée est une couleur de mot-clé CSS valide (strict, comme dans la spécification CSS). | Attribut:ColorKeyword::classMéthode: Validation::colorKeyword() |
| 181 | Nom: ssnUtilisation: ssn | Affirme que l'entrée est un SSN valide (numéro de sécurité sociale américaine). | Attribut:Ssn::classMéthode: Validation::ssn() |
| 182 | Nom: sinUtilisation: sin | Affirme que l'entrée est un péché valide (numéro d'assurance sociale de l'AC). | Attribut:Sin::classMéthode: Validation::sin() |
| 183 | Nom: ninoUtilisation: nino | Affirme que la contribution est un Nino valide (numéro d'assurance national britannique). | Attribut:Nino::classMéthode: Validation::nino() |
| 184 | Nom: vinUtilisation: vin | Affirme que l'entrée est un VIN valide (numéro d'identification du véhicule). | Attribut:Vin::classMéthode: Validation::vin() |
| 185 | Nom: issnUtilisation: issn | Affirme que l'entrée est un ISSN valide (numéro de série international standard). | Attribut:Issn::classMéthode: Validation::issn() |
| 186 | Nom: isinUtilisation: isin | Affirme que l'entrée est un ISIN valide (numéro d'identification international des valeurs mobilières). | Attribut:Isin::classMéthode: Validation::isin() |
| 187 | Nom: isbnUtilisation: isbn | Affirme que l'entrée est un ISBN valide (numéro de livre standard international). Le type (10/13) peut être spécifié pour affiner le motif. | Attribut:Isbn::classMéthode: Validation::isbn(string|int|null $type = null) |
| 188 | Nom: imeiUtilisation: imei | Affirme que l'entrée est un IMEI valide (numéro d'identité de l'équipement international de la station mobile). | Attribut:Imei::classMéthode: Validation::imei() |
| 189 | Nom: imei.svUtilisation: imei.sv | Affirme que l'entrée est un IMEI-SV valide (numéro de version internationale de l'équipement de la station mobile et logiciel). | Attribut:ImeiSv::classMéthode: Validation::imeiSv() |
| 190 | Nom: meidUtilisation: meid | Affirme que l'entrée est un MEID valide (identifiant d'équipement mobile). | Attribut:Meid::classMéthode: Validation::meid() |
| 191 | Nom: esnUtilisation: esn | Affirme que l'entrée est un ESN valide (numéro de série électronique). | Attribut:Esn::classMéthode: Validation::esn() |
| 192 | Nom: currencyUtilisation: currency | Affirme que l'entrée est un code de devise valide (par défaut: "ISO 4217 Alpha"; Numérique: "ISO 4217 Numéric"). | Attribut:Currency::classMéthode: Validation::currency(bool $numeric = false) |
| 193 | Nom: currency.nameUtilisation: currency.name | Affirme que l'entrée est un nom de devise valide (comme dans ISO 4217). | Attribut:CurrencyName::classMéthode: Validation::currencyName() |
| 194 | Nom: creditcardUtilisation : creditcard | Affirme que l'entrée est un numéro de carte de crédit valide, des espaces équilibrés et / ou des tirets sont autorisés. | Attribut:Creditcard::classMéthode: Validation::creditcard() |
| 195 | Nom: creditcard.visaUtilisation: creditcard.visa | Affirme que l'entrée est un numéro de carte de crédit visa valide, des espaces équilibrés et / ou des tirets sont autorisés. | Attribut:CreditcardVisa::classMéthode: Validation::creditcardVisa() |
| 196 | Nom: creditcard.mastercardUtilisation: creditcard.mastercard | Affirme que l'entrée est un numéro de carte de crédit MasterCard valide, des espaces et / ou des tirets équilibrés sont autorisés. | Attribut:CreditcardMastercard::classMéthode: Validation::creditcardMastercard() |
| 197 | Nom: creditcard.discoverUtilisation: creditcard.discover | Affirme que l'entrée est un numéro de carte de crédit Discover valide, des espaces équilibrés et / ou des tirets sont autorisés. | Attribut:CreditcardDiscover::classMéthode: Validation::creditcardDiscover() |
| 198 | Nom: creditcard.americanExpressUtilisation: creditcard.americanExpress | Affirme que l'entrée est un numéro de carte de crédit American Express American Valide, des espaces équilibrés et / ou des tirets sont autorisés. | Attribut:CreditcardAmericanExpress::classMéthode: Validation::creditcardAmericanExpress() |
| 199 | Nom: creditcard.dinersClubUtilisation: creditcard.dinersClub | Affirme que l'entrée est un numéro de carte de crédit Diners Club valide, des espaces équilibrés et / ou des tirets sont autorisés. | Attribut:CreditcardDinersClub::classMéthode: Validation::creditcardDinersClub() |
| 200 | Nom: creditcard.jcbUtilisation: creditcard.jcb | Affirme que l'entrée est un numéro de carte de crédit JCB valide, des espaces équilibrés et / ou des tirets sont autorisés. | Attribut:CreditcardJcb::classMéthode: Validation::creditcardJcb() |
| 201 | Nom: creditcard.maestroUtilisation: creditcard.maestro | Affirme que l'entrée est un numéro de carte de crédit maestro valide, des espaces équilibrés et / ou des tirets sont autorisés. | Attribut:CreditcardMaestro::classMéthode: Validation::creditcardMaestro() |
| 202 | Nom: creditcard.chinaUnionPayUtilisation: creditcard.chinaUnionPay | Affirme que l'entrée est un numéro de carte de crédit de China UnionPay valide, des espaces équilibrés et / ou des tirets sont autorisés. | Attribut:CreditcardChinaUnionPay::classMéthode: Validation::creditcardChinaUnionPay() |
| 203 | Nom: creditcard.instaPaymentUtilisation: creditcard.instaPayment | Affirme que l'entrée est un numéro de carte de crédit Instapayment valide, des espaces et / ou des tirets équilibrés sont autorisés. | Attribut:CreditcardInstaPayment::classMéthode: Validation::creditcardInstaPayment() |
| 204 | Nom: creditcard.laserUtilisation: creditcard.laser | Affirme que l'entrée est un numéro de carte de crédit laser valide, des espaces équilibrés et / ou des tirets sont autorisés. | Attribut:CreditcardLaser::classMéthode: Validation::creditcardLaser() |
| 205 | Nom: creditcard.uatpUtilisation: creditcard.uatp | Affirme que l'entrée est un numéro de carte de crédit UATP valide, des espaces équilibrés et / ou des tirets sont autorisés. | Attribut:CreditcardUatp::classMéthode: Validation::creditcardUatp() |
| 206 | Nom: creditcard.mirUtilisation: creditcard.mir | Affirme que l'entrée est un numéro de carte de système de paiement MIR valide, des espaces équilibrés et / ou des tirets sont autorisés. | Attribut:CreditcardMir::classMéthode: Validation::creditcardMir() |
| 207 | Nom: cvvUtilisation: cvv | Affirme que l'entrée est un CVV valide (code de sécurité de la carte). | Attribut:Cvv::classMéthode: Validation::cvv() |
| 208 | Nom: bicUtilisation: bic | Affirme que l'entrée est un BIC valide (code d'identifiant bancaire). | Attribut:Bic::classMéthode: Validation::bic() |
| 209 | Nom: ibanUtilisation: iban:IQ | Affirme que l'entrée est un IBAN valide (numéro de compte bancaire international). Le code de pays "ISO 3166-1 Alpha-2" peut être spécifié pour réduire le modèle. | Attribut:Iban::classMéthode: Validation::iban(?string $country = null) |
| 210 | Nom: luhnUtilisation: luhn | Affirme que l'entrée passe la vérification de l'algorithme Luhn. Cette règle est principalement utilisée en conjonction avec d'autres règles telles que les numéros de carte de crédit et les identifiants pour vérifier davantage la validité du sujet. | Attribut:Luhn::classMéthode: Validation::luhn() |
| 211 | Nom: php.keywordUtilisation: php.keyword | Affirme que l'entrée est un mot-clé en langage PHP. | Attribut:PhpKeyword::classMéthode: Validation::phpKeyword() |
| 212 | Nom: php.reservedUtilisation: php.reserved | Affirme que l'entrée est un mot réservé en langage PHP. | Attribut:PhpReserved::classMéthode: Validation::phpReserved() |
| 213 | Nom: php.reserved.extraUtilisation: php.reserved.extra | Affirme que l'entrée est un mot réservé en langage PHP, y compris les mots réservés doux. | Attribut:PhpReservedExtra::classMéthode: Validation::phpReservedExtra() |
| 214 | Nom: regexUtilisation: regex | Affirme que l'entrée est une expression régulière valide. | Attribut:Regex::classMéthode: Validation::regex() |
| 215 | Nom: boolUtilisation: voir boolean | Alias, reportez-vous à boolean pour la description complète. | Attribut:BoolConstraint::classMéthode: Validation::bool() |
| 216 | Nom: intUtilisation: voir integer | Alias, reportez-vous à integer pour la description complète. | Attribut:IntConstraint::classMéthode: Validation::int() |
| 217 | Nom: longUtilisation: voir integer | Alias, reportez-vous à integer pour la description complète. | Attribut:Long::classMéthode: Validation::long() |
| 218 | Nom: doubleUtilisation: voir float | Alias, reportez-vous à float pour la description complète. | Attribut:Double::classMéthode: Validation::double() |
| 219 | Nom: realUtilisation: voir float | Alias, reportez-vous à float pour la description complète. | Attribut:Real::classMéthode: Validation::real() |
| 220 | Nom: strUtilisation: voir string | Alias, reportez-vous à string pour la description complète. | Attribut:Str::classMéthode: Validation::str() |
| 221 | Nom: arrUtilisation: voir array | Alias, reportez-vous au array pour la description complète. | Attribut:Arr::classMéthode: Validation::arr() |
| 222 | Nom: objUtilisation: voir object | Alias, reportez-vous à object pour la description complète. | Attribut:Obj::classMéthode: Validation::obj() |
| 223 | Nom: streamUtilisation: voir resource | Alias, reportez-vous à resource pour la description complète. | Attribut:Stream::classMéthode: Validation::stream() |
| 224 | Nom: assertUtilisation: voyez if | Alias, reportez- if à la description complète. | Attribut:Assert::classMéthode: Validation::assert(mixed $actual, mixed $expected = true, string $operator = '==') |
| 225 | Nom: assert.equalsUtilisation: voir if.eq | Alias, reportez-vous à if.eq pour la description complète. | Attribut:AssertEquals::classMéthode: Validation::assertEquals(mixed $actual, mixed $expected) |
| 226 | Nom: assert.notEqualsUtilisation: voir if.neq | Alias, reportez-vous à if.neq pour la description complète. | Attribut:AssertNotEquals::classMéthode: Validation::assertNotEquals(mixed $actual, mixed $expected) |
| 227 | Nom: assert.greaterThanUtilisation: voir if.gt | Alias, reportez-vous à if.gt pour la description complète. | Attribut:AssertGreaterThan::classMéthode: Validation::assertGreaterThan(mixed $actual, mixed $expected) |
| 228 | Nom: assert.greaterThanOrEqualsUtilisation: voir if.gte | Alias, reportez-vous à if.gte pour la description complète. | Attribut:AssertGreaterThanOrEquals::classMéthode: Validation::assertGreaterThanOrEquals(mixed $actual, mixed $expected) |
| 229 | Nom: assert.lessThanUtilisation: voir if.lt | Alias, reportez-vous à if.lt pour la description complète. | Attribut:AssertLessThan::classMéthode: Validation::assertLessThan(mixed $actual, mixed $expected) |
| 230 | Nom: assert.lessThanOrEqualsUtilisation: voir if.lte | Alias, reportez-vous à if.lte pour la description complète. | Attribut:AssertLessThanOrEquals::classMéthode: Validation::assertLessThanOrEquals(mixed $actual, mixed $expected) |
| 231 | Nom: blankUtilisation: voir empty | Alias, reportez-vous à empty pour la description complète. | Attribut:Blank::classMéthode: Validation::blank() |
| 232 | Nom: isUtilisation: voir equals | Alias, reportez-vous aux equals pour la description complète. | Attribut:Is::classMéthode: Validation::is(mixed $value) |
| 233 | Nom: sameUtilisation: voir equals | Alias, reportez-vous aux equals pour la description complète. | Attribut:Same::classMéthode: Validation::same(mixed $value) |
| 234 | Nom: patternUtilisation: voir matches | Alias, reportez-vous aux matches pour la description complète. | Attribut:Pattern::classMéthode: Validation::pattern(string $pattern) |
| 235 | Nom: choiceUtilisation: voir in | Alias, reportez- in à la description complète. | Attribut:Choice::classMéthode: Validation::choice(string|int|float|bool|null ...$values) |
| 236 | Nom: sizeUtilisation: voir count | Alias, reportez-vous au count pour la description complète. | Attribut:Size::classMéthode: Validation::size(int $size) |
| 237 | Nom: lengthUtilisation: voir count | Alias, reportez-vous au count pour la description complète. | Attribut:Length::classMéthode: Validation::length(int $count) |
| 238 | Nom: rangeUtilisation: voir between | Alias, reportez between à la description complète. | Attribut:Range::classMéthode: Validation::range(int|float $min, int|float $max) |
| 239 | Nom: minmaxUtilisation: voir between | Alias, reportez between à la description complète. | Attribut:Minmax::classMéthode: Validation::minmax(int|float $min, int|float $max) |
| 240 | Nom: filledUtilisation: voir required | Alias, reportez-vous à required pour la description complète. | Attribut:Filled::classMéthode: Validation::filled() |
| 241 | Nom: presentUtilisation: voir required | Alias, reportez-vous à required pour la description complète. | Attribut:Present::classMéthode: Validation::present() |
| 242 | Nom: optionalUtilisation: voir allowed | Alias, reportez-vous à la description complète allowed . | Attribut:Optional::classMéthode: Validation::optional() |
| 243 | Nom: dateUtilisation: voir datetime | Alias, reportez-vous à datetime pour la description complète. | Attribut:Date::classMéthode: Validation::date() |
| 244 | Nom: date.equalsUtilisation: voir datetime.eq | Alias, reportez-vous à datetime.eq pour la description complète. | Attribut:DateEquals::classMéthode: Validation::dateEquals(string $datetime) |
| 245 | Nom: date.beforeUtilisation: voir datetime.lt | Alias, reportez-vous à datetime.lt pour la description complète. | Attribut:DateBefore::classMéthode: Validation::dateBefore(string $datetime) |
| 246 | Nom: date.beforeOrEqualsUtilisation: voir datetime.lte | Alias, reportez-vous à datetime.lte pour la description complète. | Attribut:DateBeforeOrEquals::classMéthode: Validation::dateBeforeOrEquals(string $datetime) |
| 247 | Nom: date.afterUtilisation: voir datetime.gt | Alias, reportez-vous à datetime.gt pour la description complète. | Attribut:DateAfter::classMéthode: Validation::dateAfter(string $datetime) |
| 248 | Nom: date.afterOrEqualsUtilisation: voir datetime.gte | Alias, reportez-vous à datetime.gte pour la description complète. | Attribut:DateAfterOrEquals::classMéthode: Validation::dateAfterOrEquals(string $datetime) |
| 249 | Nom: date.formatUtilisation: voir datetime.format | Alias, reportez-vous à datetime.format pour la description complète. | Attribut:DateFormat::classMéthode: Validation::dateFormat(string $format) |
| 250 | Nom: cakedayUtilisation: voir datetime.birthday | Alias, reportez-vous à datetime.birthday pour la description complète. | Attribut:Cakeday::classMéthode: Validation::cakeday() |
| Macro | Expression de validation |
|---|---|
[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" |
À ce jour, il peut sembler que mighty fait trop et les problèmes de performance commencent à survenir. Eh bien, il n'est pas nécessaire de s'en soucier. mighty est vraiment rapide et est optimisé pour fournir les meilleures performances. Voici quelques repères des performances du validateur:
Les performances de mighty Validator et Laravel Validator dans une application Laravel. Le test a été effectué à l'aide d'un tableau de 50000 éléments, d'entre eux sont des entiers et l'autre moitié sont des cordes numériques. Chaque validateur a été testé 10 fois (consécutivement) et le résultat moyen de ces 10 a été collecté:
$ 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 ' ,
]Ainsi, mighty est environ 12,5 fois plus rapide que le validateur Laravel avec XDebug désactivé et environ 4x fois plus rapide avec XDebug activé.
La référence se fait à l'aide de phpbench. Voici un aperçu rapide:
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
FAIT: Le résultat de référence le plus récent peut également être trouvé dans le pipeline CI, qui sera mis à jour avec chaque push / PR vers l'Upstream.
MAKS mighty Rule::setMessageTranslator() peut être utilisée. Cette méthode est un moyen pratique de définir un traducteur de message global, il prend une fermeture qui obtient le message brut (avec les espaces réservés) comme argument et doit renvoyer la version traduite de ce message. mighty est un projet open-source autorisé en vertu de la licence du MIT .
Copyright (C) 2022 Marwan al-Soltany. Tous droits réservés.