¡La última biblioteca de validación que necesitará!
Instalación
Acerca de mighty
Inicio rápido
mVEL
Ejemplos
Restricciones
Validaciones
Documentación
Especificación
Registro de cambios
Si te gusta este proyecto y te gustaría apoyar su desarrollo, ¡te lo agradeceríamos!
poderosa demostración" style="max-width: 100%;">
composer require marwanalsoltany/ mighty La validación es una tarea común en cualquier aplicación web. Los datos pasados a la aplicación a través de formularios (o cualquier tipo de entrada) siempre deben validarse según un conjunto de reglas. mighty puede manejar de una manera fácil y expresiva.
mighty es una biblioteca de validación rápida, poderosa, robusta y fácil de usar con la que es divertido trabajar, hace que validar cualquier dato sea muy sencillo. Gracias al poder del mighty Lenguaje de Expresión de Validación (mVEL), no se parece a nada que hayas visto antes. Con su enfoque de validación y más de 250 reglas integradas, no hay prácticamente nada que no puedas validar con él, de una manera muy expresiva y compacta. En pocas palabras, mighty es la validación con esteroides! De hecho, es la última biblioteca de validación que necesitará.
mighty proporciona varios enfoques diferentes para validar datos. Su caso de uso más común es validar datos entrantes a través de solicitudes HTTP, pero por supuesto no se limita a eso; mighty también proporciona atributos en forma de restricciones para validar fácilmente modelos y/o cualquier tipo de objetos.
mighty incluye una amplia variedad de reglas de validación convenientes que puede aplicar como una sola regla o combinarlas entre sí utilizando operadores para crear validaciones aún más complejas.
Para conocer las potentes funciones de validación de mighty , vayamos directo al grano y veamos algunos ejemplos:
Validar datos del formulario usando 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 Validar el estado de un objeto usando los atributos 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 ejemplo del resultado de validar un objeto validable se vería así:
// 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. Consulte también ValidatableObject y ValidatableObjectChild .
Sugerencia: Puede encontrar más ejemplos en la sección Ejemplos.
mighty tiene el concepto de expresión de validación. La expresión de validación en sus formas más simples es solo una cadena que describe cuán mighty se deben validar los datos dados. Estas cadenas se basan en la mighty Especificación del lenguaje de expresión de validación (mVEL). mVEL es bastante simple, legible por humanos y fácil de manejar. Es una combinación de conceptos y/o especificaciones bien establecidos como álgebra booleana, operadores bit a bit, JSON y CSV.
Por lo tanto, la expresión de validación se puede definir como una cadena que contiene algunas reglas separadas por operadores bit a bit que construirán una expresión que, cuando se evalúe utilizando la lógica del álgebra booleana , dará como resultado el resultado final de la validación. Las reglas pueden tener argumentos, los tipos de estos argumentos se pueden indicar usando las mismas reglas de los tipos JSON . Una regla también puede tener varios argumentos y los argumentos están separados por comas ( CSV ).
Por ejemplo, required&string&between:2,255|null es una expresión de validación válida, esta expresión puede entenderse como la siguiente:
required Afirma que la entrada está presente.string Afirma que la entrada es una cadena.between:2,255 Afirma que la entrada es una cadena con una longitud entre 2 y 255.null Afirma que la entrada es nula. La expresión required&string&between:2,255|null significa que la entrada debe estar presente; Y de tipo cadena; Y entre 2 y 255 de largo; O nulo. Por lo tanto, es una cadena que acepta valores NULL y, cuando no es nula, debe tener entre 2 y 255 caracteres.
Digamos que la entrada fue " mighty is Awesome!" , el resultado de la expresión required&string&between:2,255|null contra esa entrada sería 1&1&1|0 lo que resultará en 1 que es true , si la entrada fuera null el resultado sería 0&0&0|1 = 1 , si la entrada fuera X el resultado sería 0&0&0|0 = 0 , etc...
A diferencia de otras implementaciones de validaciones, el concepto de álgebra booleana que utiliza operadores bit a bit brinda la posibilidad de crear validaciones complejas que son muy legibles y compactas manteniendo las reglas en un número mínimo, reutilizando la lógica existente de manera inversa o compuesta y, finalmente, manteniendo la base de código lo más SECO posible. Los beneficios se pueden resumir en los siguientes puntos:
~ ) para hacer exactamente lo contrario de lo que hace normalmente.& ), OR (usando | ) o XOR (usando ^ ), dos o más reglas simples.( ) y CLOSE (usando ) ).? ).! ).[macro] .Además, el concepto de JSON garantiza la seguridad de los tipos de datos de los argumentos, y el concepto de CSV garantiza que la lista de argumentos tenga reglas de análisis claras.
Lo mejor es que no es necesario memorizar todas las reglas ni la sintaxis del lenguaje de expresión de validación. La clase Validation es una interfaz fluida que se puede utilizar para crear una expresión de validación. Conoce todas mighty reglas disponibles y tiene soporte completo de IDE-Intellisense para que sea lo más fácil posible. Por ejemplo:
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 ();
Hecho: ¡Por lo general, se necesitan más palabras para describir lo que hace una expresión de validación que la expresión de validación misma!
A continuación se muestran algunos ejemplos de escenarios del mundo real:
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);
Sugerencia: Al proporcionar anulaciones de mensajes a Validator::class , se recomienda utilizar RuleValidation::class para establecer claves de matriz. Esta clase contiene todos mighty nombres de reglas integradas como constantes de clase.
El validador se puede ampliar de tres formas:
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) ' ,
],
],
];
Sugerencia: consulte las rules , aliases y macros predeterminados del Validator para ver más ejemplos.
mighty consta de más de 250 reglas/atributos que se pueden utilizar para validar cualquier dato o los valores de clases, constantes de clase, propiedades y métodos.
Los atributos se dividen en tres grupos principales:
Los atributos de restricción genérica se encuentran en el espacio de nombres MAKS mighty Validation .
Este grupo consta actualmente de un solo atributo; ese es el atributo Constraint . Este atributo requiere una expresión de validación para validar los datos a los que se aplica. También es la clase base para todos los demás atributos.
Los atributos de restricción especiales se encuentran en el espacio de nombres MAKS mighty ValidationConstraint .
Este grupo contiene atributos que realizan un trabajo específico que solo está disponible en el contexto de atributos. Consta de los siguientes atributos:
Rule : este atributo se utiliza para validar cualquier dato utilizando una única regla de validación. También es la clase base para todos los atributos del grupo de atributos de restricciones de reglas.Callback : este atributo se utiliza para validar cualquier dato mediante una función de devolución de llamada.Valid : este atributo se utiliza para validar la validez de un objeto validable.Shape : este atributo se utiliza para validar la forma de una matriz u objeto. Tenga en cuenta que este es el único atributo que valida un conjunto de valores (datos estructurados) en lugar de un valor único.Compound : este atributo se utiliza para combinar un conjunto de restricciones para crear una expresión de validación. Las restricciones se pueden combinar utilizando cualquier operador y también pueden tener un comportamiento. Sirve como una forma orientada a objetos de crear una expresión de validación.
Nota: Tenga en cuenta que las restricciones que se pueden usar con los atributos Shape::class y Compound::class deben ser instancias reales de Constraint::class , Rule::class o Compound::class . NO se permiten Callback::class , Valid::class o Shape::class del grupo de atributos de restricción especial . Si necesita esta función, abra un problema y discutiremos su implementación.
Los atributos de restricción de regla se encuentran en el espacio de nombres MAKS mighty ValidationConstraintRule .
Este grupo contiene atributos que se basan en una única regla de validación. Consiste en la mayoría de los atributos que proporciona mighty . Consulte la sección Validaciones para obtener la lista completa.
mighty tiene una lista enorme de restricciones integradas, es realmente raro que necesites algo más que lo que mighty proporciona. Sin embargo, a veces surge la necesidad de una restricción personalizada, así es como se puede lograr:
<?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
}
}
Nota: Las restricciones personalizadas se consideran parte del grupo de atributos de restricciones especiales (es decir, no se permite su uso con/dentro de las restricciones Shape::class y Compound::class ).
La siguiente tabla enumera todas las reglas disponibles, incluidos sus equivalentes de atributos y métodos:
Validation::classConstraint::class y Constraint/Rule/*| No. | Regla | Descripción | Atributo / Método |
|---|---|---|---|
| 001 | Nombre: nullUso: null | Afirma que la entrada es nula. | Atributo:NullConstraint::classMétodo: Validation::null() |
| 002 | Nombre: booleanUso: boolean | Afirma que la entrada es booleana. | Atributo:Boolean::classMétodo: Validation::boolean() |
| 003 | Nombre: integerUso: integer | Afirma que la entrada es un número entero. | Atributo:Integer::classMétodo: Validation::integer() |
| 004 | Nombre: floatUso: float | Afirma que la entrada es un flotante. | Atributo:FloatConstraint::classMétodo: Validation::float() |
| 005 | Nombre: numericUso: numeric | Afirma que la entrada es numérica. | Atributo:NumericConstraint::classMétodo: Validation::numeric() |
| 006 | Nombre: stringUso: string | Afirma que la entrada es una cadena. | Atributo:StringConstraint::classMétodo: Validation::string() |
| 007 | Nombre: scalarUso: scalar | Afirma que la entrada es un escalar. | Atributo:Scalar::classMétodo: Validation::scalar() |
| 008 | Nombre: arrayUso: array | Afirma que la entrada es una matriz. | Atributo:ArrayConstraint::classMétodo: Validation::array() |
| 009 | Nombre: objectUso: object | Afirma que la entrada es un objeto. | Atributo:ObjectConstraint::classMétodo: Validation::object() |
| 010 | Nombre: callableUso: callable | Afirma que la entrada es invocable. | Atributo:CallableConstraint::classMétodo: Validation::callable() |
| 011 | Nombre: iterableUso: iterable | Afirma que la entrada es iterable. | Atributo:IterableConstraint::classMétodo: Validation::iterable() |
| 012 | Nombre: countableUso: countable | Afirma que la entrada es contable. | Atributo:Countable::classMétodo: Validation::countable() |
| 013 | Nombre: resourceUso: resource | Afirma que la entrada es un recurso. | Atributo:ResourceConstraint::classMétodo: Validation::resource() |
| 014 | Nombre: typeUso: type:'["int","float"]' | Afirma que la entrada es uno de los tipos dados. | Atributo:Type::classMétodo: Validation::type(string|array $type) |
| 015 | Nombre: type.debugUso: type.debug:string | Afirma que la entrada es del tipo dado usando get_debug_type(). | Atributo:TypeDebug::classMétodo: Validation::typeDebug(string $type) |
| 016 | Nombre: alphaUso: alpha | Afirma que la entrada consta únicamente de caracteres alfabéticos. | Atributo:Alpha::classMétodo: Validation::alpha() |
| 017 | Nombre: alnumUso: alnum | Afirma que la entrada consta únicamente de caracteres alfanuméricos. | Atributo:Alnum::classMétodo: Validation::alnum() |
| 018 | Nombre: lowerUso: lower | Afirma que la entrada consta únicamente de caracteres en minúscula. | Atributo:Lower::classMétodo: Validation::lower() |
| 019 | Nombre: upperUso: upper | Afirma que la entrada consta únicamente de caracteres en mayúsculas. | Atributo:Upper::classMétodo: Validation::upper() |
| 020 | Nombre: cntrlUso: cntrl | Afirma que la entrada consta únicamente de caracteres de control. | Atributo:Cntrl::classMétodo: Validation::cntrl() |
| 021 | Nombre: spaceUso: space | Afirma que la entrada consta únicamente de caracteres de espacio en blanco. | Atributo:Space::classMétodo: Validation::space() |
| 022 | Nombre: punctUso: punct | Afirma que la entrada consta únicamente de caracteres de puntuación. | Atributo:Punct::classMétodo: Validation::punct() |
| 023 | Nombre: graphUso: graph | Afirma que la entrada consta únicamente de caracteres gráficos (caracteres que crean una salida visible). | Atributo:Graph::classMétodo: Validation::graph() |
| 024 | Nombre: printUso: print | Afirma que la entrada consta únicamente de caracteres imprimibles. | Atributo:PrintConstraint::classMétodo: Validation::print() |
| 025 | Nombre: digitUso: digit | Afirma que la entrada consta únicamente de dígitos (caracteres numéricos). | Atributo:Digit::classMétodo: Validation::digit() |
| 026 | Nombre: xdigitUso: xdigit | Afirma que la entrada representa dígitos hexadecimales. | Atributo:Xdigit::classMétodo: Validation::xdigit() |
| 027 | Nombre: booleanLikeUso: booleanLike | Afirma que la entrada es un valor que se puede analizar como booleano (VERDADERO: verdadero, "verdadero", "1", "activado", "sí"; FALSO: falso, "falso", "0", "desactivado" , "no", "", nulo). | Atributo:BooleanLike::classMétodo: Validation::booleanLike() |
| 028 | Nombre: integerLikeUso: integerLike:0,100 | Afirma que la entrada es un valor que se puede analizar como un número entero dentro del rango especificado. | Atributo:IntegerLike::classMétodo: Validation::integerLike(int $min = PHP_INT_MIN, int $max = PHP_INT_MAX) |
| 029 | Nombre: integerLike.allowOctalUso: integerLike.allowOctal:0,100 | Afirma que la entrada es un valor que se puede analizar como un número entero dentro del rango especificado y puede estar en notación octal. | Atributo:IntegerLikeAllowOctal::classMétodo: Validation::integerLikeAllowOctal(int $min = PHP_INT_MIN, int $max = PHP_INT_MAX) |
| 030 | Nombre: integerLike.allowHexUso: integerLike.allowHex:0,100 | Afirma que la entrada es un valor que se puede analizar como un número entero dentro del rango especificado y puede estar en notación hexadecimal. | Atributo:IntegerLikeAllowHex::classMétodo: Validation::integerLikeAllowHex(int $min = PHP_INT_MIN, int $max = PHP_INT_MAX) |
| 031 | Nombre: floatLikeUso: floatLike:1.0,100.0 | Afirma que la entrada es un valor que se puede analizar como un valor flotante dentro del rango especificado. | Atributo:FloatLike::classMétodo: Validation::floatLike(float $min = PHP_FLOAT_MIN, float $max = PHP_FLOAT_MAX) |
| 032 | Nombre: floatLike.allowThousandsUso: floatLike.allowThousands:1.0,100.0 | Afirma que la entrada es un valor que se puede analizar como un valor flotante dentro del rango especificado. | Atributo:FloatLikeAllowThousands::classMétodo: Validation::floatLikeAllowThousands(float $min = PHP_FLOAT_MIN, float $max = PHP_FLOAT_MAX) |
| 033 | Nombre: regexpUso: regexp:"/[az]/i" | Afirma que la entrada coincide con una expresión regular compatible con Perl. | Atributo:Regexp::classMétodo: Validation::regexp(string $pattern) |
| 034 | Nombre: ipUso: ip | Afirma que la entrada es una dirección IP. | Atributo:Ip::classMétodo: Validation::ip() |
| 035 | Nombre: ip.v4Uso: ip.v4 | Afirma que la entrada es una dirección IPv4. | Atributo:IpV4::classMétodo: Validation::ipV4() |
| 036 | Nombre: ip.v6Uso: ip.v6 | Afirma que la entrada es una dirección IPv6. | Atributo:IpV6::classMétodo: Validation::ipV6() |
| 037 | Nombre: ip.notReservedUso: ip.notReserved | Afirma que la entrada es una dirección IP que no está dentro del rango de IP reservado. | Atributo:IpNotReserved::classMétodo: Validation::ipNotReserved() |
| 038 | Nombre: ip.notPrivateUso: ip.notPrivate | Afirma que la entrada es una dirección IP que no está dentro del rango de IP privadas. | Atributo:IpNotPrivate::classMétodo: Validation::ipNotPrivate() |
| 039 | nombre: macUso: mac | Afirma que la entrada es una dirección MAC. | Atributo:Mac::classMétodo: Validation::mac() |
| 040 | Nombre: urlUso: url | Afirma que la entrada es una URL. | Atributo:Url::classMétodo: Validation::url() |
| 041 | Nombre: url.withPathUso: url.withPath | Afirma que la entrada es una URL que contiene una ruta. | Atributo:UrlWithPath::classMétodo: Validation::urlWithPath() |
| 042 | Nombre: url.withQueryUso: url.withQuery | Afirma que la entrada es una URL que contiene una consulta. | Atributo:UrlWithQuery::classMétodo: Validation::urlWithQuery() |
| 043 | Nombre: emailUso: email | Afirma que la entrada es una dirección de correo electrónico. | Atributo:Email::classMétodo: Validation::email() |
| 044 | Nombre: email.withUnicodeUso: email.withUnicode | Afirma que la entrada es una dirección de correo electrónico (se permite Unicode). | Atributo:EmailWithUnicode::classMétodo: Validation::emailWithUnicode() |
| 045 | Nombre: domainUso: domain | Afirma que la entrada es un dominio. | Atributo:Domain::classMétodo: Validation::domain() |
| 046 | Nombre: domain.isActiveUso: domain.isActive | Afirma que la entrada es un dominio activo. Funciona con dominios y correos electrónicos. | Atributo:DomainIsActive::classMétodo: Validation::domainIsActive() |
| 047 | Nombre: fileUso: file | Afirma que la entrada es un archivo (puede ser un archivo, un enlace o un directorio). | Atributo:File::classMétodo: Validation::file() |
| 048 | Nombre: file.isFileUso: file.isFile | Afirma que la entrada es un archivo. | Atributo:FileIsFile::classMétodo: Validation::fileIsFile() |
| 049 | Nombre: file.isLinkUso: file.isLink | Afirma que la entrada es un enlace. | Atributo:FileIsLink::classMétodo: Validation::fileIsLink() |
| 050 | Nombre: file.isDirectoryUso: file.isDirectory | Afirma que la entrada es un directorio. | Atributo:FileIsDirectory::classMétodo: Validation::fileIsDirectory() |
| 051 | Nombre: file.isExecutableUso: file.isExecutable | Afirma que la entrada es un archivo y es ejecutable. | Atributo:FileIsExecutable::classMétodo: Validation::fileIsExecutable() |
| 052 | Nombre: file.isWritableUso: file.isWritable | Afirma que la entrada es un archivo y se puede escribir. | Atributo:FileIsWritable::classMétodo: Validation::fileIsWritable() |
| 053 | Nombre: file.isReadableUso: file.isReadable | Afirma que la entrada es un archivo y es legible. | Atributo:FileIsReadable::classMétodo: Validation::fileIsReadable() |
| 054 | Nombre: file.isUploadedUso: file.isUploaded | Afirma que la entrada es un archivo que se carga a través de HTTP POST. | Atributo:FileIsUploaded::classMétodo: Validation::fileIsUploaded() |
| 055 | Nombre: file.sizeUso: file.size:1024 | Afirma que la entrada es un archivo y que el tamaño es igual al tamaño dado en bytes. | Atributo:FileSize::classMétodo: Validation::fileSize(int $sizeInBytes) |
| 056 | Nombre: file.size.lteUso: file.size.lte:1024 | Afirma que la entrada es un archivo y que el tamaño es menor o igual al tamaño dado en bytes. | Atributo:FileSizeLte::classMétodo: Validation::fileSizeLte(int $sizeInBytes) |
| 057 | Nombre: file.size.gteUso: file.size.gte:1024 | Afirma que la entrada es un archivo y que el tamaño es mayor o igual al tamaño dado en bytes. | Atributo:FileSizeGte::classMétodo: Validation::fileSizeGte(int $sizeInBytes) |
| 058 | Nombre: file.dirnameUso: file.dirname:/path/to/dir | Afirma que la entrada es un archivo y su nombre de directorio es igual al nombre de directorio dado. | Atributo:FileDirname::classMétodo: Validation::fileDirname(string $dirname) |
| 059 | Nombre: file.basenameUso: file.basename:file.ext | Afirma que la entrada es un archivo y su nombre base es igual al nombre base dado. | Atributo:FileBasename::classMétodo: Validation::fileBasename(string $basename) |
| 060 | Nombre: file.filenameUso: file.filename:file | Afirma que la entrada es un archivo y su nombre de archivo es igual al nombre de archivo dado. | Atributo:FileFilename::classMétodo: Validation::fileFilename(string $filename) |
| 061 | Nombre: file.extensionUso: file.extension:ext | Afirma que la entrada es un archivo y su extensión es igual a la extensión dada. | Atributo:FileExtension::classMétodo: Validation::fileExtension(string $extension) |
| 062 | Nombre: file.mimeUso: file.mime:text/plain | Afirma que la entrada es un archivo y su tipo MIME es uno de los tipos MIME dados. | Atributo:FileMime::classMétodo: Validation::fileMime(string|array $mine) |
| 063 | Nombre: imageUso: image | Afirma que la entrada es un archivo de imagen (jpg, jpeg, png, gif, bmp, svg o webp). | Atributo:Image::classMétodo: Validation::image() |
| 064 | Nombre: image.widthUso: image.width:1920 | Afirma que la entrada es una imagen y su ancho es igual al ancho dado en píxeles. | Atributo:ImageWidth::classMétodo: Validation::imageWidth(int $width) |
| 065 | Nombre: image.width.lteUso: image.width.lte:1920 | Afirma que la entrada es una imagen y su ancho es menor o igual al ancho dado en píxeles. | Atributo:ImageWidthLte::classMétodo: Validation::imageWidthLte(int $width) |
| 066 | Nombre: image.width.gteUso: image.width.gte:1920 | Afirma que la entrada es una imagen y su ancho es mayor o igual al ancho dado en píxeles. | Atributo:ImageWidthGte::classMétodo: Validation::imageWidthGte(int $width) |
| 067 | Nombre: image.heightUso: image.height:1080 | Afirma que la entrada es una imagen y su altura es igual a la altura dada en píxeles. | Atributo:ImageHeight::classMétodo: Validation::imageHeight(int $height) |
| 068 | Nombre: image.height.lteUso: image.height.lte:1080 | Afirma que la entrada es una imagen y su altura es menor o igual a la altura dada en píxeles. | Atributo:ImageHeightLte::classMétodo: Validation::imageHeightLte(int $height) |
| 069 | Nombre: image.height.gteUso: image.height.gte:1080 | Afirma que la entrada es una imagen y su altura es mayor o igual a la altura dada en píxeles. | Atributo:ImageHeightGte::classMétodo: Validation::imageHeightGte(int $height) |
| 070 | Nombre: image.dimensionsUso: image.dimensions:1920,1080,== | Afirma que la entrada es una imagen y sus dimensiones son menores, iguales o mayores que el ancho y alto dados en píxeles. | Atributo:ImageDimensions::classMétodo: Validation::imageDimensions(int $width, int $height, string $operator = '==') |
| 071 | Nombre: image.ratioUso: image.ratio:16:9 | Afirma que la entrada es una imagen y su relación de aspecto es igual a la relación dada (la relación debe especificarse como una fracción como "16/9"). | Atributo:ImageRatio::classMétodo: Validation::imageRatio(string $ratio) |
| 072 | Nombre: ifUso: if:7,7,== | Comprueba la condición entre el primer argumento y el segundo argumento; el operador de condición también se puede especificar como tercer argumento. | Atributo:IfConstraint::classMétodo: Validation::if(mixed $actual, mixed $expected = true, string $operator = '==') |
| 073 | Nombre: if.eqUso: if.eq:3,3 | Comprueba la condición entre el primer argumento y el segundo argumento, el operador de condición es "==". | Atributo:IfEq::classMétodo: Validation::ifEq(mixed $actual, mixed $expected) |
| 074 | Nombre: if.neqUso: if.neq:1,2 | Comprueba la condición entre el primer argumento y el segundo argumento, el operador de condición es "!=". | Atributo:IfNeq::classMétodo: Validation::ifNeq(mixed $actual, mixed $expected) |
| 075 | Nombre: if.idUso: if.id:3,3 | Comprueba la condición entre el primer argumento y el segundo argumento, el operador de condición es "===". | Atributo:IfId::classMétodo: Validation::ifId(mixed $actual, mixed $expected) |
| 076 | Nombre: if.nidUso: if.nid:1,2 | Comprueba la condición entre el primer argumento y el segundo argumento, el operador de condición es "!==". | Atributo:IfNid::classMétodo: Validation::ifNid(mixed $actual, mixed $expected) |
| 077 | Nombre: if.gtUso: if.gt:2,1 | Comprueba la condición entre el primer argumento y el segundo argumento, el operador de condición es ">". | Atributo:IfGt::classMétodo: Validation::ifGt(mixed $actual, mixed $expected) |
| 078 | Nombre: if.gteUso: if.gte:2,2 | Comprueba la condición entre el primer argumento y el segundo argumento, el operador de condición es ">=". | Atributo:IfGte::classMétodo: Validation::ifGte(mixed $actual, mixed $expected) |
| 079 | Nombre: if.ltUso: if.lt:1,2 | Comprueba la condición entre el primer argumento y el segundo argumento, el operador de condición es "<". | Atributo:IfLt::classMétodo: Validation::ifLt(mixed $actual, mixed $expected) |
| 080 | Nombre: if.lteUso: if.lte:1,2 | Comprueba la condición entre el primer argumento y el segundo argumento, el operador de condición es "<=". | Atributo:IfLte::classMétodo: Validation::ifLte(mixed $actual, mixed $expected) |
| 081 | Nombre: emptyUso: empty | Afirma que la entrada está vacía utilizando la construcción de lenguaje vacía() (está en blanco, es decir, una cadena vacía, una matriz vacía, falso, nulo o 0). | Atributo:EmptyConstraint::classMétodo: Validation::empty() |
| 082 | Nombre: requiredUso: required | Afirma que la entrada es obligatoria (no está en blanco, es decir, no es una cadena vacía o nula). | Atributo:Required::classMétodo: Validation::required() |
| 083 | Nombre: allowedUso: allowed | Afirma que la entrada está permitida (puede estar vacía o tener cualquier valor, las cadenas nulas y vacías se consideran valores válidos). | Atributo:Allowed::classMétodo: Validation::allowed() |
| 084 | Nombre: forbiddenUso: forbidden | Afirma que la entrada está prohibida (es nula o no está presente). | Atributo:Forbidden::classMétodo: Validation::forbidden() |
| 085 | Nombre: acceptedUso: accepted | Afirma que la entrada es aceptada (es igual a: "on", "yes", "yeah", "yep", "yo", "ok", "okay", "aye", 1 o "1", true o " true") tenga en cuenta que las cadenas se tratan sin distinguir entre mayúsculas y minúsculas. | Atributo:Accepted::classMétodo: Validation::accepted() |
| 086 | Nombre: declinedUso: declined | Afirma que la entrada se rechaza (es igual a: "off", "no", "not", "nope", "neh", "nay", 0 o "0", false o "false") tenga en cuenta que las cadenas se tratan sin distinguir entre mayúsculas y minúsculas. | Atributo:Declined::classMétodo: Validation::declined() |
| 087 | Nombre: bitUso: bit | Afirma que la entrada es bit (es igual a: 1 o "1", verdadero; 0 o "0", falso). | Atributo:Bit::classMétodo: Validation::bit() |
| 088 | Nombre: bit.isOnUso: bit.isOn | Afirma que la entrada es un bit activado (es igual a: verdadero, 1 o "1"). | Atributo:BitIsOn::classMétodo: Validation::bitIsOn() |
| 089 | Nombre: bit.isOffUso: bit.isOff | Afirma que la entrada es un bit desactivado (es igual a: falso, 0 o "0"). | Atributo:BitIsOff::classMétodo: Validation::bitIsOff() |
| 090 | Nombre: equalsUso: equals:value | Afirma que la entrada es igual al valor dado. Funciona con tipos escalares y nulos. El operador de comparación es "==". | Atributo:Equals::classMétodo: Validation::equals(string|int|float|bool|null $value) |
| 091 | Nombre: matchesUso: matches:'"/^[a-zA-Z0-9]+$/"' | Afirma que la entrada coincide con el patrón dado. Funciona sólo con cuerdas. | Atributo:Matches::classMétodo: Validation::matches(string $pattern) |
| 092 | Nombre: inUso: in:val1,val2,... | Afirma que la entrada está en los valores dados. Funciona con tipos escalares y nulos. | Atributo:In::classMétodo: Validation::in(string|int|float|bool|null ...$values) |
| 093 | Nombre: countUso: count:3 | Afirma que el recuento de entrada es igual al valor dado. Funciona con todos los tipos de datos (nulo: 0; booleano: 0 o 1; flotante/entero: valor numérico; cadena: recuento de caracteres; matriz/contable: recuento de elementos; objeto: recuento de propiedades accesibles). | Atributo:Count::classMétodo: Validation::count(int $count) |
| 094 | Nombre: minUso: min:3 | Afirma que el recuento de entrada es mayor o igual que el valor dado. Funciona con todos los tipos de datos (nulo: 0; booleano: 0 o 1; flotante/entero: valor numérico; cadena: recuento de caracteres; matriz/contable: recuento de elementos; objeto: recuento de propiedades accesibles). | Atributo:Min::classMétodo: Validation::min(int|float $count) |
| 095 | Nombre: maxUso: max:3 | Afirma que el recuento de entrada es menor o igual que el valor dado. Funciona con todos los tipos de datos (nulo: 0; booleano: 0 o 1; flotante/entero: valor numérico; cadena: recuento de caracteres; matriz/contable: recuento de elementos; objeto: recuento de propiedades accesibles). | Atributo:Max::classMétodo: Validation::max(int|float $count) |
| 096 | Nombre: betweenUso: between:3,7 | Afirma que el recuento de entrada está entre los valores dados. Funciona con todos los tipos de datos (nulo: 0; booleano: 0 o 1; flotante/entero: valor numérico; cadena: recuento de caracteres; matriz/contable: recuento de elementos; objeto: recuento de propiedades accesibles). | Atributo:Between::classMétodo: Validation::between(int|float $min, int|float $max) |
| 097 | Nombre: number.isPositiveUso: number.isPositive | Afirma que la entrada es un número positivo. | Atributo:NumberIsPositive::classMétodo: Validation::numberIsPositive() |
| 098 | Nombre: number.isNegativeUso: number.isNegative | Afirma que la entrada es un número negativo. | Atributo:NumberIsNegative::classMétodo: Validation::numberIsNegative() |
| 099 | Nombre: number.isEvenUso: number.isEven | Afirma que la entrada es un número par. | Atributo:NumberIsEven::classMétodo: Validation::numberIsEven() |
| 100 | Nombre: number.isOddUso: number.isOdd | Afirma que la entrada es un número impar. | Atributo:NumberIsOdd::classMétodo: Validation::numberIsOdd() |
| 101 | Nombre: number.isMultipleOfUso: number.isMultipleOf:3 | Afirma que la entrada es un múltiplo del número dado. | Atributo:NumberIsMultipleOf::classMétodo: Validation::numberIsMultipleOf(float $number) |
| 102 | Nombre: number.isFiniteUso: number.isFinite | Afirma que la entrada es un número finito. | Atributo:NumberIsFinite::classMétodo: Validation::numberIsFinite() |
| 103 | Nombre: number.isInfiniteUso: number.isInfinite | Afirma que la entrada es un número infinito. | Atributo:NumberIsInfinite::classMétodo: Validation::numberIsInfinite() |
| 104 | Nombre: number.isNanUso: number.isNan | Afirma que la entrada no es un número. | Atributo:NumberIsNan::classMétodo: Validation::numberIsNan() |
| 105 | Nombre: string.charsetUso: string.charset:UTF-8 | Afirma que la entrada está codificada en uno de los conjuntos de caracteres dados (alias incluidos). La verificación se realiza distinguiendo entre mayúsculas y minúsculas. | Atributo:StringCharset::classMétodo: Validation::stringCharset(string|array $charset) |
| 106 | Nombre: string.containsUso: string.contains:substring | Afirma que la entrada contiene la subcadena dada. Se puede especificar un segundo argumento booleano para habilitar el modo estricto (distingue entre mayúsculas y minúsculas). | Atributo:StringContains::classMétodo: Validation::stringContains(string $substring, bool $strict = false) |
| 107 | Nombre: string.startsWithUso: string.startsWith:substring,1 | Afirma que la entrada comienza con la subcadena dada. Se puede especificar un segundo argumento booleano para habilitar el modo estricto (distingue entre mayúsculas y minúsculas). | Atributo:StringStartsWith::classMétodo: Validation::stringStartsWith(string $substring, bool $strict = false) |
| 108 | Nombre: string.endsWithUso: string.endsWith:substring,0 | Afirma que la entrada termina con la subcadena dada. Se puede especificar un segundo argumento booleano para habilitar el modo estricto (distingue entre mayúsculas y minúsculas). | Atributo:StringEndsWith::classMétodo: Validation::stringEndsWith(string $substring, bool $strict = false) |
| 109 | Nombre: string.lengthUso: string.length:3 | Afirma que la entrada es una cadena que tiene exactamente la longitud dada. | Atributo:StringLength::classMétodo: Validation::stringLength(int $length) |
| 110 | Nombre: string.wordsCountUso: string.wordsCount:3 | Afirma que la entrada es una cadena que contiene exactamente el recuento de palabras dado. | Atributo:StringWordsCount::classMétodo: Validation::stringWordsCount(int $count) |
| 111 | Nombre: array.hasKeyUso: array.hasKey:key | Afirma que la matriz de entrada tiene la clave dada. | Atributo:ArrayHasKey::classMétodo: Validation::arrayHasKey(string|int $key) |
| 112 | Nombre: array.hasValueUso: array.hasValue:value | Afirma que la matriz de entrada contiene el valor dado. Funciona con tipos escalares. | Atributo:ArrayHasValue::classMétodo: Validation::arrayHasValue(mixed $value) |
| 113 | Nombre: array.hasDistinctUso: array.hasDistinct:key | Afirma que la entrada es una matriz multidimensional que contiene valores distintos de la clave dada. | Atributo:ArrayHasDistinct::classMétodo: Validation::arrayHasDistinct(string|int $key) |
| 114 | Nombre: array.isAssociativeUso: array.isAssociative | Afirma que la entrada es una matriz asociativa. | Atributo:ArrayIsAssociative::classMétodo: Validation::arrayIsAssociative() |
| 115 | Nombre: array.isSequentialUso: array.isSequential | Afirma que la entrada es una matriz secuencial. | Atributo:ArrayIsSequential::classMétodo: Validation::arrayIsSequential() |
| 116 | Nombre: array.isUniqueUso: array.isUnique | Afirma que la matriz de entrada contiene valores únicos. Funciona sólo con matrices unidimensionales. | Atributo:ArrayIsUnique::classMétodo: Validation::arrayIsUnique() |
| 117 | Nombre: array.subsetUso: array.subset:'{"a":1,"b":2}' | Afirma que la entrada es una matriz que contiene el subconjunto dado. Tenga en cuenta que esta verificación se aplica solo a la primera dimensión de la matriz. | Atributo:ArraySubset::classMétodo: Validation::arraySubset(array $subset) |
| 118 | Nombre: object.hasPropertyUso: object.hasProperty:property | Afirma que la entrada tiene la propiedad dada. | Atributo:ObjectHasProperty::classMétodo: Validation::objectHasProperty(string $property) |
| 119 | Nombre: object.hasMethodUso: object.hasMethod:method | Afirma que la entrada tiene el método dado. | Atributo:ObjectHasMethod::classMétodo: Validation::objectHasMethod(string $method) |
| 120 | Nombre: object.isStringableUso: object.isStringable | Afirma que la entrada implementa el método __toString(). | Atributo:ObjectIsStringable::classMétodo: Validation::objectIsStringable() |
| 121 | Nombre: object.isInstanceOfUso: object.isInstanceOf:NamespaceClass | Afirma que la entrada es una instancia de la clase dada. | Atributo:ObjectIsInstanceOf::classMétodo: Validation::objectIsInstanceOf(string $classFQN) |
| 122 | Nombre: object.isSubclassOfUso: object.isSubclassOf:NamespaceClass | Afirma que la entrada es una subclase de la clase dada. | Atributo:ObjectIsSubclassOf::classMétodo: Validation::objectIsSubclassOf(string $classFQN) |
| 123 | Nombre: serializedUso: serialized | Afirma que la entrada es un dato serializado PHP válido. | Atributo:Serialized::classMétodo: Validation::serialized() |
| 124 | Nombre: jsonUso: json | Afirma que la entrada es un JSON válido. | Atributo:Json::classMétodo: Validation::json() |
| 125 | Nombre: base64Uso: base64 | Afirma que la entrada es una cadena codificada en Base64 válida. | Atributo:Base64::classMétodo: Validation::base64() |
| 126 | Nombre: xmlUso: xml | Afirma que la entrada es un XML válido. | Atributo:Xml::classMétodo: Validation::xml() |
| 127 | Nombre: localeUso: locale | Afirma que la entrada es un identificador local válido (predeterminado: [ISO 639-1] o [ISO 639-1]_[ISO 3166-1 alpha-2], no distingue entre mayúsculas y minúsculas, la entrada se canonicaliza antes de verificar (guiones para subrayar, sin puntos ni juego de caracteres); estricto: [ISO 639-1] o [ISO 639-1]_[ISO 3166-1 alfa-2], distingue entre mayúsculas y minúsculas sin canonicalización. | Atributo:Locale::classMétodo: Validation::locale(bool $strict = false) |
| 128 | Nombre: languageUso: language | Afirma que la entrada es un código de idioma válido (predeterminado: "ISO 639-1"; largo: "ISO 639-2/T"). | Atributo:Language::classMétodo: Validation::language(bool $long = false) |
| 129 | Nombre: countryUso: country | Afirma que la entrada es un código de país válido (predeterminado: "ISO 3166-1 alfa-2"; largo: "ISO 3166-1 alfa-3"). | Atributo:Country::classMétodo: Validation::country(bool $long = false) |
| 130 | Nombre: timezoneUso: timezone | Afirma que la entrada es un identificador de zona horaria válido (predeterminado: no distingue entre mayúsculas y minúsculas; estricto: distingue entre mayúsculas y minúsculas). | Atributo:Timezone::classMétodo: Validation::timezone(bool $strict = false) |
| 131 | Nombre: datetimeUso: datetime | Afirma que la entrada es una cadena/objeto de fecha y hora válido. | Atributo:Datetime::classMétodo: Validation::datetime() |
| 132 | Nombre: datetime.eqUso: datetime.eq:"2015-01-01" | Afirma que la entrada es igual a la cadena de fecha y hora dada. | Atributo:DatetimeEq::classMétodo: Validation::datetimeEq(string $datetime) |
| 133 | Nombre: datetime.ltUso: datetime.lt:tomorrow | Afirma que la entrada es una cadena/objeto de fecha y hora menor que (antes) de la cadena de fecha y hora dada. | Atributo:DatetimeLt::classMétodo: Validation::datetimeLt(string $datetime) |
| 134 | Nombre: datetime.lteUso: datetime.lte:tomorrow | Afirma que la entrada es una cadena/objeto de fecha y hora menor que (antes) o igual a la cadena de fecha y hora dada. | Atributo:DatetimeLte::classMétodo: Validation::datetimeLte(string $datetime) |
| 135 | Nombre: datetime.gtUso: datetime.gt:today | Afirma que la entrada es una cadena/objeto de fecha y hora mayor que (después) de la cadena de fecha y hora dada. | Atributo:DatetimeGt::classMétodo: Validation::datetimeGt(string $datetime) |
| 136 | Nombre: datetime.gteUso: datetime.gte:today | Afirma que la entrada es una cadena/objeto de fecha y hora mayor que (después) o igual a la cadena de fecha y hora dada. | Atributo:DatetimeGte::classMétodo: Validation::datetimeGte(string $datetime) |
| 137 | Nombre: datetime.birthdayUso: datetime.birthday | Afirma que la entrada es una cadena/objeto de fecha y hora que cumple años hoy. La entrada debe estar preferiblemente en formato "AAAA-MM-DD". | Atributo:DatetimeBirthday::classMétodo: Validation::datetimeBirthday() |
| 138 | Nombre: datetime.formatUso: datetime.format:"Ymd H:i:s" | Afirma que la entrada es una fecha/hora válida con el formato dado. | Atributo:DatetimeFormat::classMétodo: Validation::datetimeFormat(string $format) |
| 139 | Nombre: datetime.format.globalUso: datetime.format.global | Afirma que la entrada parece una cadena de fecha y hora global válida según lo definido en la especificación HTML5. | Atributo:DatetimeFormatGlobal::classMétodo: Validation::datetimeFormatGlobal() |
| 140 | Nombre: datetime.format.localUso: datetime.format.local | Afirma que la entrada parece una cadena de fecha y hora local válida según lo definido en la especificación HTML5. | Atributo:DatetimeFormatLocal::classMétodo: Validation::datetimeFormatLocal() |
| 141 | Nombre: datestampUso: datestamp | Afirma que la entrada parece una marca de fecha humana, en formato DMY o MDY, separada por punto, guión o barra. | Atributo:Datestamp::classMétodo: Validation::datestamp() |
| 142 | Nombre: datestamp.ymdUso: datestamp.ymd | Afirma que la entrada parece una marca de fecha humana con formato YMD, separada por punto, guión o barra. | Atributo:DatestampYmd::classMétodo: Validation::datestampYmd() |
| 143 | Nombre: datestamp.dmyUso: datestamp.dmy | Afirma que la entrada parece una marca de fecha humana con formato DMY, separada por punto, guión o barra. | Atributo:DatestampDmy::classMétodo: Validation::datestampDmy() |
| 144 | Nombre: datestamp.mdyUso: datestamp.mdy | Afirma que la entrada parece una marca de fecha humana con formato MDY, separada por un punto, un guión o una barra. | Atributo:DatestampMdy::classMétodo: Validation::datestampMdy() |
| 145 | Nombre: timestampUso: timestamp | Afirma que la entrada parece una marca de tiempo humana, en formato de 24 o 12 horas con o sin segundos. | Atributo:Timestamp::classMétodo: Validation::timestamp() |
| 146 | Nombre: timestamp.12Uso: timestamp.12 | Afirma que la entrada parece una marca de tiempo humana, formato de 12 horas con o sin segundos y AM/PM opcional. | Atributo:Timestamp12::classMétodo: Validation::timestamp12() |
| 147 | Nombre: timestamp.hmsUso: timestamp.hms | Afirma que la entrada parece una marca de tiempo humana, en formato de 24 o 12 horas con segundos. | Atributo:TimestampHms::classMétodo: Validation::timestampHms() |
| 148 | Nombre: timestamp.hmUso: timestamp.hm | Afirma que la entrada parece una marca de tiempo humana, en formato de 24 o 12 horas sin segundos. | Atributo:TimestampHm::classMétodo: Validation::timestampHm() |
| 149 | Nombre: timestamp.msUso: timestamp.ms | Afirma que la entrada parece una marca de tiempo humana, que contiene solo minutos y segundos. | Atributo:TimestampMs::classMétodo: Validation::timestampMs() |
| 150 | Nombre: calender.dayUso: calender.day | Afirma que la entrada parece un día calendario en plano o en formato largo ("lunes" o "lunes"). | Atributo:CalenderDay::classMétodo: Validation::calenderDay() |
| 151 | Nombre: calender.monthUso: calender.month | Afirma que la entrada parece un mes calendario en formato plano o largo ("enero" o "enero"). | Atributo:CalenderMonth::classMétodo: Validation::calenderMonth() |
| 152 | Nombre: usernameUso: username | Afirma que la entrada es un nombre de usuario válido (entre 4 y 32 caracteres, consta de letras en cualquier caso, opcionalmente números, opcionalmente uno de los siguientes caracteres "-_." (no consecutivos) y siempre debe comenzar con una letra y terminar con una letra o un número). | Atributo:Username::classMétodo: Validation::username() |
| 153 | Nombre: passwordUso: password | Afirma que la entrada es una contraseña válida (mínimo 8 caracteres, consta de al menos una letra minúscula y una mayúscula, al menos un número, al menos un carácter especial y, opcionalmente, un espacio). | Atributo:Password::classMétodo: Validation::password() |
| 154 | Nombre: uuidUso: uuid | Afirma que la entrada es un UUID válido. La versión (v1/v2/v3/v4/v5) se puede especificar para limitar el patrón. | Atributo:Uuid::classMétodo: Validation::uuid(string|int|null $version = null) |
| 155 | Nombre: asciiUso: ascii | Afirma que la entrada es una cadena que contiene solo caracteres ASCII (cadena compatible con ASCII). | Atributo:Ascii::classMétodo: Validation::ascii() |
| 156 | Nombre: slugUso: slug | Afirma que la entrada es un slug válido. | Atributo:Slug::classMétodo: Validation::slug() |
| 157 | Nombre: metaUso: meta | Afirma que la entrada es una cadena que contiene sólo metacaracteres (caracteres especiales) (es decir, "@, #, $, ..."). | Atributo:Meta::classMétodo: Validation::meta() |
| 158 | Nombre: textUso: text | Afirma que la entrada es una cadena que contiene letras y puntuación de cualquier idioma. | Atributo:Text::classMétodo: Validation::text() |
| 159 | Nombre: wordsUso: words | Afirma que la entrada es una cadena que contiene solo palabras y espacios sin ningún otro carácter. | Atributo:Words::classMétodo: Validation::words() |
| 160 | Nombre: spacelessUso: spaceless | Afirma que la entrada es una cadena que no contiene espacios en blanco. | Atributo:Spaceless::classMétodo: Validation::spaceless() |
| 161 | Nombre: emojiUso: emoji | Afirma que la entrada contiene un emoji. | Atributo:Emoji::classMétodo: Validation::emoji() |
| 162 | Nombre: romanUso: roman | Afirma que la entrada es un número romano válido. | Atributo:Roman::classMétodo: Validation::roman() |
| 163 | Nombre: phoneUso: phone | Afirma que la entrada es un número de teléfono válido (admite: América del Norte, Europa y la mayoría de los países de Asia y Medio Oriente). | Atributo:Phone::classMétodo: Validation::phone() |
| 164 | Nombre: geolocationUso: geolocation | Afirma que la entrada es una geolocalización válida (combinación de coordenadas de latitud y longitud). | Atributo:Geolocation::classMétodo: Validation::geolocation() |
| 165 | Nombre: versionUso: version | Afirma que la entrada es un número de versión semántica válido. | Atributo:Version::classMétodo: Validation::version() |
| 166 | Nombre: amountUso: amount | Afirma que la entrada contiene solo números, un punto decimal opcional (coma o punto) y un signo menos opcional (usado para cantidades de dinero, por ejemplo). | Atributo:Amount::classMétodo: Validation::amount() |
| 167 | Nombre: amount.dollarUso: amount.dollar | Afirma que la entrada es una cantidad de USD con formato válido, donde el punto decimal y el separador de miles son opcionales. | Atributo:AmountDollar::classMétodo: Validation::amountDollar() |
| 168 | Nombre: amount.euroUso: amount.euro | Afirma que la entrada es una cantidad de EUR con formato válido, donde el punto decimal y el separador de miles son opcionales. | Atributo:AmountEuro::classMétodo: Validation::amountEuro() |
| 169 | Nombre: colorUso: color | Afirma que la entrada es un color CSS válido (palabra clave "suelta", HEX, HEX-Alpha, RGB, RGBA, RGB "nueva sintaxis", HSL, HSLA, HSL "nueva sintaxis"). | Atributo:Color::classMétodo: Validation::color() |
| 170 | Nombre: color.hexUso: color.hex | Afirma que la entrada es un color CSS HEX válido. | Atributo:ColorHex::classMétodo: Validation::colorHex() |
| 171 | Nombre: color.hexShortUso: color.hexShort | Afirma que la entrada es un color CSS 3-Char-HEX válido. | Atributo:ColorHexShort::classMétodo: Validation::colorHexShort() |
| 172 | Nombre: color.hexLongUso: color.hexLong | Afirma que la entrada es un color CSS 6-Char-HEX válido. | Atributo:ColorHexLong::classMétodo: Validation::colorHexLong() |
| 173 | Nombre: color.hexAlphaUso: color.hexAlpha | Afirma que la entrada es un color CSS HEX-Alfa (4 u 8 caracteres) válido. | Atributo:ColorHexAlpha::classMétodo: Validation::colorHexAlpha() |
| 174 | Nombre: color.rgbUso: color.rgb | Afirma que la entrada es un color CSS RGB válido. | Atributo:ColorRgb::classMétodo: Validation::colorRgb() |
| 175 | Nombre: color.rgbaUso: color.rgba | Afirma que la entrada es un color CSS RGBA válido. | Atributo:ColorRgba::classMétodo: Validation::colorRgba() |
| 176 | Nombre: color.rgb.newUso: color.rgb.new | Afirma que la entrada es un color CSS4 RGB válido. | Atributo:ColorRgbNew::classMétodo: Validation::colorRgbNew() |
| 177 | Nombre: color.hslUso: color.hsl | Afirma que la entrada es un color CSS HSL válido. | Atributo:ColorHsl::classMétodo: Validation::colorHsl() |
| 178 | Nombre: color.hslaUso: color.hsla | Afirma que la entrada es un color CSS HSLA válido. | Atributo:ColorHsla::classMétodo: Validation::colorHsla() |
| 179 | Nombre: color.hsl.newUso: color.hsl.new | Afirma que la entrada es un color CSS4 HSL válido. | Atributo:ColorHslNew::classMétodo: Validation::colorHslNew() |
| 180 | Nombre: color.keywordUso: color.keyword | Afirma que la entrada es un color de palabra clave CSS válido (estricto, como en la especificación CSS). | Atributo:ColorKeyword::classMétodo: Validation::colorKeyword() |
| 181 | Nombre: ssnUso: ssn | Afirma que la entrada es un SSN válido (número de seguro social de los Estados Unidos). | Atributo:Ssn::classMétodo: Validation::ssn() |
| 182 | Nombre: sinUso: sin | Afirma que la entrada es un pecado válido (número de seguro social de CA). | Atributo:Sin::classMétodo: Validation::sin() |
| 183 | Nombre: ninoUso: nino | Afirma que la entrada es un nino válido (número de seguro nacional del Reino Unido). | Atributo:Nino::classMétodo: Validation::nino() |
| 184 | Nombre: vinUso: vin | Afirma que la entrada es un VIN válido (número de identificación del vehículo). | Atributo:Vin::classMétodo: Validation::vin() |
| 185 | Nombre: issnUso: issn | Afirma que la entrada es una ISSN válida (número de serie estándar internacional). | Atributo:Issn::classMétodo: Validation::issn() |
| 186 | Nombre: isinUso: isin | Afirma que la entrada es un ISIN válido (número de identificación de valores internacionales). | Atributo:Isin::classMétodo: Validation::isin() |
| 187 | Nombre: isbnUso: isbn | Afirma que la entrada es un ISBN válido (número de libro estándar internacional). Se puede especificar el tipo (10/13) para reducir el patrón. | Atributo:Isbn::classMétodo: Validation::isbn(string|int|null $type = null) |
| 188 | Nombre: imeiUso: imei | Afirma que la entrada es un IMEI válido (número de identidad de equipos de estación móvil internacional). | Atributo:Imei::classMétodo: Validation::imei() |
| 189 | Nombre: imei.svUso: imei.sv | Afirma que la entrada es un IMEI-SV válido (número de versión internacional de identidad de equipos de estación móvil y software). | Atributo:ImeiSv::classMétodo: Validation::imeiSv() |
| 190 | Nombre: meidUso: meid | Afirma que la entrada es un meid válido (identificador de equipos móviles). | Atributo:Meid::classMétodo: Validation::meid() |
| 191 | Nombre: esnUso: esn | Afirma que la entrada es un ESN válido (número de serie electrónico). | Atributo:Esn::classMétodo: Validation::esn() |
| 192 | Nombre: currencyUso: currency | Afirma que la entrada es un código de divisas válido (predeterminado: "ISO 4217 alfa"; numérico: "ISO 4217 numérico"). | Atributo:Currency::classMétodo: Validation::currency(bool $numeric = false) |
| 193 | Nombre: currency.nameUso: currency.name | Afirma que la entrada es un nombre de moneda válido (como en ISO 4217). | Atributo:CurrencyName::classMétodo: Validation::currencyName() |
| 194 | Nombre: creditcardUso: creditcard | Afirma que la entrada es un número de tarjeta de crédito válido, se permiten espacios equilibrados y/o guiones. | Atributo:Creditcard::classMétodo: Validation::creditcard() |
| 195 | Nombre: creditcard.visaUso: creditcard.visa | Afirma que la entrada es un número de tarjeta de crédito Visa válido, se permiten espacios y/o guiones equilibrados. | Atributo:CreditcardVisa::classMétodo: Validation::creditcardVisa() |
| 196 | Nombre: creditcard.mastercardUso: creditcard.mastercard | Afirma que la entrada es un número de tarjeta de crédito MasterCard válido, se permiten espacios equilibrados y/o guiones. | Atributo:CreditcardMastercard::classMétodo: Validation::creditcardMastercard() |
| 197 | Nombre: creditcard.discoverUso: creditcard.discover | Afirma que la entrada es un número de tarjeta de crédito Discover válido, se permiten espacios equilibrados y/o guiones. | Atributo:CreditcardDiscover::classMétodo: Validation::creditcardDiscover() |
| 198 | Nombre: creditcard.americanExpressUso: creditcard.americanExpress | Afirma que la entrada es un número de tarjeta de crédito American Express válido, se permiten espacios y/o guiones equilibrados. | Atributo:CreditcardAmericanExpress::classMétodo: Validation::creditcardAmericanExpress() |
| 199 | Nombre: creditcard.dinersClubUso: creditcard.dinersClub | Afirma que la entrada es un número de tarjeta de crédito de Diners Club válido, se permiten espacios equilibrados y/o guiones. | Atributo:CreditcardDinersClub::classMétodo: Validation::creditcardDinersClub() |
| 200 | Nombre: creditcard.jcbUso: creditcard.jcb | Afirma que la entrada es un número de tarjeta de crédito JCB válido, se permiten espacios equilibrados y/o guiones. | Atributo:CreditcardJcb::classMétodo: Validation::creditcardJcb() |
| 201 | Nombre: creditcard.maestroUso: creditcard.maestro | Afirma que la entrada es un número de tarjeta de crédito de Maestro válido, se permiten espacios y/o guiones equilibrados. | Atributo:CreditcardMaestro::classMétodo: Validation::creditcardMaestro() |
| 202 | Nombre: creditcard.chinaUnionPayUso: creditcard.chinaUnionPay | Afirma que la entrada es un número de tarjeta de crédito válido de China UnionPay, se permiten espacios equilibrados y/o guiones. | Atributo:CreditcardChinaUnionPay::classMétodo: Validation::creditcardChinaUnionPay() |
| 203 | Nombre: creditcard.instaPaymentUso: creditcard.instaPayment | Afirma que la entrada es un número de tarjeta de crédito de Instapayment válido, se permiten espacios equilibrados y/o guiones. | Atributo:CreditcardInstaPayment::classMétodo: Validation::creditcardInstaPayment() |
| 204 | Nombre: creditcard.laserUso: creditcard.laser | Afirma que la entrada es un número de tarjeta de crédito láser válido, se permiten espacios equilibrados y/o guiones. | Atributo:CreditcardLaser::classMétodo: Validation::creditcardLaser() |
| 205 | Nombre: creditcard.uatpUso: creditcard.uatp | Afirma que la entrada es un número de tarjeta de crédito UATP válido, se permiten espacios equilibrados y/o guiones. | Atributo:CreditcardUatp::classMétodo: Validation::creditcardUatp() |
| 206 | Nombre: creditcard.mirUso: creditcard.mir | Afirma que la entrada es un número de tarjeta del sistema de pago MIR válido, se permiten espacios equilibrados y/o guiones. | Atributo:CreditcardMir::classMétodo: Validation::creditcardMir() |
| 207 | Nombre: cvvUso: cvv | Afirma que la entrada es un CVV válido (código de seguridad de la tarjeta). | Atributo:Cvv::classMétodo: Validation::cvv() |
| 208 | Nombre: bicUso: bic | Afirma que la entrada es un BIC válido (código de identificador bancario). | Atributo:Bic::classMétodo: Validation::bic() |
| 209 | Nombre: ibanUso: iban:IQ | Afirma que la entrada es un IBAN válido (número de cuenta bancaria internacional). Se puede especificar el código de país "ISO 3166-1 alfa-2" para reducir el patrón. | Atributo:Iban::classMétodo: Validation::iban(?string $country = null) |
| 210 | Nombre: luhnUso: luhn | Afirma que la entrada pasa la verificación del algoritmo Luhn. Esta regla se usa principalmente junto con otras reglas como números de tarjetas de crédito e identificadores para verificar aún más la validez del sujeto. | Atributo:Luhn::classMétodo: Validation::luhn() |
| 211 | Nombre: php.keywordUso: php.keyword | Afirma que la entrada es una palabra clave de lenguaje PHP. | Atributo:PhpKeyword::classMétodo: Validation::phpKeyword() |
| 212 | Nombre: php.reservedUso: php.reserved | Afirma que la entrada es una palabra reservada de lenguaje PHP. | Atributo:PhpReserved::classMétodo: Validation::phpReserved() |
| 213 | Nombre: php.reserved.extraUso: php.reserved.extra | Afirma que la entrada es una palabra reservada de lenguaje PHP que incluye palabras reservadas suaves. | Atributo:PhpReservedExtra::classMétodo: Validation::phpReservedExtra() |
| 214 | Nombre: regexUso: regex | Afirma que la entrada es una expresión regular válida. | Atributo:Regex::classMétodo: Validation::regex() |
| 215 | Nombre: boolUso: ver boolean | Alias, consulte boolean para la descripción completa. | Atributo:BoolConstraint::classMétodo: Validation::bool() |
| 216 | Nombre: intUso: ver integer | Alias, consulte el integer para la descripción completa. | Atributo:IntConstraint::classMétodo: Validation::int() |
| 217 | Nombre: longUso: ver integer | Alias, consulte el integer para la descripción completa. | Atributo:Long::classMétodo: Validation::long() |
| 218 | Nombre: doubleUso: ver float | Alias, consulte float para la descripción completa. | Atributo:Double::classMétodo: Validation::double() |
| 219 | Nombre: realUso: ver float | Alias, consulte float para la descripción completa. | Atributo:Real::classMétodo: Validation::real() |
| 220 | Nombre: strUso: ver string | Alias, consulte la string para la descripción completa. | Atributo:Str::classMétodo: Validation::str() |
| 221 | Nombre: arrUso: ver array | Alias, consulte la array para la descripción completa. | Atributo:Arr::classMétodo: Validation::arr() |
| 222 | Nombre: objUso: ver object | Alias, consulte el object para la descripción completa. | Atributo:Obj::classMétodo: Validation::obj() |
| 223 | Nombre: streamUso: ver resource | Alias, consulte el resource para la descripción completa. | Atributo:Stream::classMétodo: Validation::stream() |
| 224 | Nombre: assertUso: ver if | Alias, consulte if para la descripción completa. | Atributo:Assert::classMétodo: Validation::assert(mixed $actual, mixed $expected = true, string $operator = '==') |
| 225 | Nombre: assert.equalsUso: ver if.eq | Alias, consulte if.eq para obtener la descripción completa. | Atributo:AssertEquals::classMétodo: Validation::assertEquals(mixed $actual, mixed $expected) |
| 226 | Nombre: assert.notEqualsUso: ver if.neq | Alias, consulte if.neq para la descripción completa. | Atributo:AssertNotEquals::classMétodo: Validation::assertNotEquals(mixed $actual, mixed $expected) |
| 227 | Nombre: assert.greaterThanUso: ver if.gt | Alias, consulte if.gt para obtener la descripción completa. | Atributo:AssertGreaterThan::classMétodo: Validation::assertGreaterThan(mixed $actual, mixed $expected) |
| 228 | Nombre: assert.greaterThanOrEqualsUso: ver if.gte | Alias, consulte if.gte para ver la descripción completa. | Atributo:AssertGreaterThanOrEquals::classMétodo: Validation::assertGreaterThanOrEquals(mixed $actual, mixed $expected) |
| 229 | Nombre: assert.lessThanUso: ver if.lt | Alias, consulte if.lt para obtener la descripción completa. | Atributo:AssertLessThan::classMétodo: Validation::assertLessThan(mixed $actual, mixed $expected) |
| 230 | Nombre: assert.lessThanOrEqualsUso: ver if.lte | Alias, consulte if.lte para ver la descripción completa. | Atributo:AssertLessThanOrEquals::classMétodo: Validation::assertLessThanOrEquals(mixed $actual, mixed $expected) |
| 231 | Nombre: blankUso: ver empty | Alias, consulte empty para obtener la descripción completa. | Atributo:Blank::classMétodo: Validation::blank() |
| 232 | Nombre: isUso: ver equals | Alias, consulte equals para la descripción completa. | Atributo:Is::classMétodo: Validation::is(mixed $value) |
| 233 | Nombre: sameUso: ver equals | Alias, consulte equals para la descripción completa. | Atributo:Same::classMétodo: Validation::same(mixed $value) |
| 234 | Nombre: patternUso: ver matches | Alias, consulte matches para la descripción completa. | Atributo:Pattern::classMétodo: Validation::pattern(string $pattern) |
| 235 | Nombre: choiceUso: ver in | Alias, in la descripción completa. | Atributo:Choice::classMétodo: Validation::choice(string|int|float|bool|null ...$values) |
| 236 | Nombre: sizeUso: ver count | Alias, consulte el count para la descripción completa. | Atributo:Size::classMétodo: Validation::size(int $size) |
| 237 | Nombre: lengthUso: ver count | Alias, consulte el count para la descripción completa. | Atributo:Length::classMétodo: Validation::length(int $count) |
| 238 | Nombre: rangeUso: ver between | Alias, consulte between la descripción completa. | Atributo:Range::classMétodo: Validation::range(int|float $min, int|float $max) |
| 239 | Nombre: minmaxUso: ver between | Alias, consulte between la descripción completa. | Atributo:Minmax::classMétodo: Validation::minmax(int|float $min, int|float $max) |
| 240 | Nombre: filledUso: ver required | Alias, consulte required para la descripción completa. | Atributo:Filled::classMétodo: Validation::filled() |
| 241 | Nombre: presentUso: ver required | Alias, consulte required para la descripción completa. | Atributo:Present::classMétodo: Validation::present() |
| 242 | Nombre: optionalUso: ver allowed | Alias, consulte el allowed para la descripción completa. | Atributo:Optional::classMétodo: Validation::optional() |
| 243 | Nombre: dateUso: ver datetime | Alias, consulte datetime para obtener la descripción completa. | Atributo:Date::classMétodo: Validation::date() |
| 244 | Nombre: date.equalsUso: ver datetime.eq | Alias, consulte datetime.eq para obtener la descripción completa. | Atributo:DateEquals::classMétodo: Validation::dateEquals(string $datetime) |
| 245 | Nombre: date.beforeUso: ver datetime.lt | Alias, consulte datetime.lt para obtener la descripción completa. | Atributo:DateBefore::classMétodo: Validation::dateBefore(string $datetime) |
| 246 | Nombre: date.beforeOrEqualsUso: ver datetime.lte | Alias, consulte datetime.lte para ver la descripción completa. | Atributo:DateBeforeOrEquals::classMétodo: Validation::dateBeforeOrEquals(string $datetime) |
| 247 | Nombre: date.afterUso: ver datetime.gt | Alias, consulte datetime.gt para obtener la descripción completa. | Atributo:DateAfter::classMétodo: Validation::dateAfter(string $datetime) |
| 248 | Nombre: date.afterOrEqualsUso: ver datetime.gte | Alias, consulte datetime.gte para ver la descripción completa. | Atributo:DateAfterOrEquals::classMétodo: Validation::dateAfterOrEquals(string $datetime) |
| 249 | Nombre: date.formatUso: ver datetime.format | Alias, consulte datetime.format para obtener la descripción completa. | Atributo:DateFormat::classMétodo: Validation::dateFormat(string $format) |
| 250 | Nombre: cakedayUso: ver datetime.birthday | Alias, consulte datetime.birthday para obtener la descripción completa. | Atributo:Cakeday::classMétodo: Validation::cakeday() |
| Macro | Expresión de validación |
|---|---|
[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" |
A estas alturas, puede parecer que mighty está haciendo demasiado y las preocupaciones de rendimiento están comenzando a surgir. Bueno, no hay necesidad de preocuparse por eso. mighty es realmente rápido y está optimizado para proporcionar el mejor rendimiento. Aquí hay algunos puntos de referencia del rendimiento del validador:
El rendimiento del mighty validador y el validador de Laravel en una aplicación de Laravel. La prueba se llevó a cabo utilizando una matriz de 50000 elementos, la mitad de ellos son enteros y la otra mitad son cadenas numéricas. Cada validador se probó 10 veces (consecutivamente) y se recogió el resultado promedio de estos 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 ' ,
]Entonces mighty es aproximadamente 12.5 veces más rápido que el validador de Laravel con XDebug Discapacitada y aproximadamente 4x veces más rápido con XDebug habilitado.
El punto de referencia se realiza usando phpbench. Aquí hay una visión general rápida:
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
Hecho: El resultado de referencia más reciente también se puede encontrar en la tubería CI, que se actualizará con cada empuje/PR al escenario.
MAKS mighty Rule::setMessageTranslator() . Este método es una forma conveniente de establecer un traductor de mensajes global, requiere un cierre que recibe el mensaje sin procesar (con marcadores de posición) como argumento y debe devolver la versión traducida de ese mensaje. mighty es un proyecto de código abierto con licencia bajo la licencia MIT .
Copyright (c) 2022 Marwan al-Soltany. Reservados todos los derechos.