Последняя библиотека проверки, которая вам когда-либо понадобится!
Установка
О mighty
Быстрый старт
мВЭЛ
Примеры
Ограничения
Валидации
Документация
Спецификация
Журнал изменений
Если вам нравится этот проект и вы хотите поддержать его развитие, мы будем признательны, если вы поставите ему лайк!
могучая демонстрация" style="max-width: 100%;">
composer require marwanalsoltany/ mighty Проверка — обычная задача в любом веб-приложении. Данные, передаваемые в приложение через формы (или любой тип ввода, если уж на то пошло), всегда должны проверяться на соответствие набору правил. mighty может справиться легко и выразительно.
mighty — это быстрая, мощная, надежная и простая в использовании библиотека проверки, с которой просто интересно работать, она упрощает проверку любых данных. Благодаря возможностям mighty языка выражений проверки (mVEL) он не похож ни на что, что вы видели раньше. Благодаря подходу проверки и более чем 250 встроенным правилам практически нет ничего, что вы не могли бы проверить с его помощью, в очень выразительной и компактной форме. Проще говоря, mighty испытание на стероидах! Это действительно последняя библиотека проверки, которая вам когда-либо понадобится.
mighty предоставляет несколько различных подходов к проверке данных. Наиболее распространенным вариантом использования является проверка входящих данных посредством HTTP-запросов, но, конечно, этим дело не ограничивается; mighty также предоставляет атрибуты в виде ограничений для простой проверки моделей и/или объектов любого типа.
mighty включает в себя широкий спектр удобных правил проверки, которые вы можете применять как одно правило или комбинировать их друг с другом с помощью операторов для создания еще более сложных проверок.
Чтобы узнать о мощных функциях проверки mighty , давайте сразу перейдем к делу и рассмотрим несколько примеров:
Проверка данных формы с помощью Validator::class :
use MAKS mighty Validator ;
$ validator = new Validator ();
$ validator
-> setData ([
' name ' => ' John Doe ' ,
' username ' => ' john.doe ' ,
' password ' => ' Super@Secret#123 ' ,
' email ' => ' [email protected] ' ,
' hobbies ' => [ ' coding ' , ' design ' , ' sports ' ],
])
-> setValidations ([
// required&string&between:3,255
' name ' => $ validator -> validation ()-> required ()-> string ()-> between ( 3 , 255 ),
// required&string&matches:/[a-z0-9._-]/i
' username ' => $ validator -> validation ()-> required ()-> string ()-> matches ( ' /[a-z0-9._-]/i ' ),
// required&string&min:8
' password ' => $ validator -> validation ()-> required ()-> string ()-> min ( 8 ),
// required&email
' email ' => $ validator -> validation ()-> required ()-> email (),
// null^(required&array&max:5)
' hobbies ' => $ validator
-> validation ()
-> null ()
-> xor ()
-> group ( fn ( $ validation ) => $ validation
-> array ()
-> max ( 5 )
),
// null|(if:${hobbies.validations.array}&(string&min:3))
// hobby can be null or a string with at least 3 characters if hobbies is an array
' hobbies.* ' => $ validator
-> validation ()
-> null ()
-> or ()
-> group ( fn ( $ validation ) => $ validation
-> if ( ' ${hobbies.validations.array} ' )
-> open ()
-> string ()
-> min ( 3 )
-> close ()
),
])
-> validate ();
$ result = $ validator -> isOK (); // boolean result of the overall validation result
$ errors = $ validator -> getErrors (); // an array of results of validations that failed
$ results = $ validator -> getResults (); // an array of results of all validations
$ validator -> check (); // void or throws an exception with a nicely formatted message of what exactly went wrong Проверка состояния объекта с использованием атрибутов Constraint::class :
use MAKS mighty Validation Strategy ;
use MAKS mighty Validation Behavior ;
use MAKS mighty Validation Operator ;
use MAKS mighty Validation Constraint ;
use MAKS mighty Validation Constraint as Assert ;
use MAKS mighty Validation Constraint ValidatableObjectInterface ;
use MAKS mighty Validation Constraint ValidatableObjectTrait ;
class ValidatableObject implements ValidatableObjectInterface
{
use ValidatableObjectTrait;
#[ Assert Rule Equals( ' CONST ' )]
public const CONST = ' CONST ' ;
#[ Assert Rule In([ ' STATIC ' , ' VAR ' ])]
public static $ static = ' VAR ' ;
#[ Assert Rule StringConstraint]
#[ Assert Rule StringCharset( ' UTF-8 ' )]
#[ Assert Rule Between( 3 , 99 )]
public $ default = ' DEFAULT ' ;
#[ Assert Rule StringConstraint]
#[ Assert Rule StringContains( ' <element> ' )]
#[ Assert Rule Xml]
public $ xml = ' <?xml version="1.0"?><element></element> ' ;
#[ Assert Rule ArrayConstraint]
#[ Assert Shape([
' string ' => new Assert Rule Str ,
' array ' => new Assert Rule Arr ,
])]
public $ array = [
' string ' => ' value ' ,
' array ' => [],
];
#[ Assert Rule ObjectConstraint]
#[ Assert Rule ObjectIsInstanceOf(ValidatableObjectInterface::class)]
#[ Assert Valid(message: ' Not valid ' )]
public $ object ;
#[ Assert Callback( ' is_scalar ' , ' Data is not scalar ' )]
#[Constraint( ' string&min:3 ' , strategy: Strategy::FailLazy, messages: [
' string ' => ' Must be string. ' ,
' min ' => ' Must be longer than ${@arguments.0}. ' ,
])]
public function getDefault ()
{
return $ this -> default ;
}
#[ Assert Compound([
new Assert Rule Str ,
new Assert Compound ([
new Assert Rule Arr ,
new Assert Compound ([
new Assert Rule Blank ,
], Operator::Not),
], Operator::And),
], Operator::Xor, Behavior::Pessimistic, Strategy::FailLazy)]
public static function getStaticProperty ()
{
return static :: $ static ;
}
}
$ object = new ValidatableObject ();
$ result = $ object -> isValid (); // boolean result of the overall validation result
$ results = $ object -> validate (); // an array of results of all validations
$ object -> check (); // void or throws an exception with a nicely formatted message of what exactly went wrongПример вывода проверки проверяемого объекта будет выглядеть следующим образом:
// check out the previous snippet see the used constraints
$ object = new ValidatableObject ();
$ object -> object = new class implements ValidatableObjectInterface {
use ValidatableObjectTrait;
// some properties and their validation constraints ...
};
$ object -> default = null ; // this must be a string
$ object -> check ();
// ValidationFailedException::class
// Data failed to pass the validation.
// (01) The value (null) of the "ValidatableObject->default" property failed to pass the validation [string]. Problem: Value must be a string.
// (02) The value (null) of the "ValidatableObject->default" property failed to pass the validation [string.charset:"UTF-8"]. Problem: Value must be encoded in one of the following charsets: ["UTF-8"].
// (03) The value (null) of the "ValidatableObject->default" property failed to pass the validation [between:3,99]. Problem: Value must be between 3 and 99 or have a value/count/length that is between 3 and 99.
// (04) The return value (null) of the "ValidatableObject->getDefault()" method failed to pass the validation [callback]. Problem: Data is not scalar.
// (05) The return value (null) of the "ValidatableObject->getDefault()" method failed to pass the validation [string&min:3]. Problems: Must be string; Must be longer than 3. Проверьте также ValidatableObject и ValidatableObjectChild .
Подсказка: больше примеров можно найти в разделе «Примеры».
У mighty есть концепция выражения проверки. Выражение проверки в своей простейшей форме — это просто строка, описывающая, насколько mighty следует проверять данные. Эти строки основаны на mighty спецификации языка выражений проверки (mVEL). mVEL довольно прост, удобен для чтения и с ним легко справиться. Это комбинация хорошо известных концепций и/или спецификаций, таких как булева алгебра, побитовые операторы, JSON и CSV.
Таким образом, выражение проверки можно определить как строку, содержащую некоторые правила, разделенные побитовыми операторами , которые будут создавать выражение, которое при оценке с использованием логики булевой алгебры приведет к окончательному результату проверки. Правила могут иметь аргументы, типы этих аргументов можно обозначать с помощью тех же правил типов JSON . Правило также может иметь несколько аргументов, которые разделяются запятыми ( CSV ).
Например, required&string&between:2,255|null является допустимым выражением проверки, это выражение можно понимать следующим образом:
required Утверждает, что ввод присутствует.string Утверждает, что входные данные являются строкой.between:2,255 Утверждает, что входные данные представляют собой строку длиной от 2 до 255.null Утверждает, что входное значение равно нулю. Выражение required&string&between:2,255|null означает, что входные данные должны присутствовать; И типа строка; И от 2 до 255 в длину; ИЛИ ноль. Таким образом, это строка, допускающая значение NULL, длина которой, если она не равна нулю, должна составлять от 2 до 255 символов.
Допустим, входные данные были " mighty is Awesome!" , результат выражения required&string&between:2,255|null для этого ввода будет 1&1&1|0 , что приведет к 1 , что является true , если входное значение было null результат будет 0&0&0|1 = 1 , если входное значение было X результат будет 0&0&0|0 = 0 и т. д.
В отличие от других реализаций проверок, концепция булевой алгебры с использованием побитовых операторов дает возможность создавать сложные проверки, которые очень читабельны и компактны, сохраняя при этом минимальное количество правил, повторно используя существующую логику в обратном или составном порядке и, наконец, сохраняя база кода настолько СУХАЯ, насколько это возможно. Преимущества можно свести к следующим пунктам:
~ ), чтобы оно делало прямо противоположное тому, что оно обычно делает.& ), OR (с использованием | ) или XOR (с использованием ^ ), двух или более простых правил.( ) и CLOSE (с использованием ) ).? ).! ).[macro] .Кроме того, концепция JSON обеспечивает безопасность типов данных аргументов, а концепция CSV гарантирует, что список аргументов имеет четкие правила анализа.
Самое приятное то, что вам не нужно запоминать все правила и синтаксис языка выражений проверки. Класс Validation — это гибкий интерфейс, который можно использовать для создания выражения проверки. Он знает обо всех mighty правилах и имеет полную поддержку IDE-Intellisense, что делает работу максимально простой. Например:
use MAKS mighty Validation ;
// the validation expression: `required&string&between:2,255|null`
// can be constructed using the Validation::class as follows:
$ validation = ( new Validation ())-> required ()-> string ()-> between ( 2 , 255 )-> or ()-> null (); // AND is the default operator
// or statically:
$ validation = Validation:: required ()-> string ()-> between ( 2 , 255 )-> or ()-> null ();
Факт: для описания того, что делает выражение проверки, обычно требуется больше слов, чем само выражение проверки!
Вот несколько примеров реальных сценариев:
use MAKS mighty Validator ;
$ result = ( $ validator = new Validator ())
-> validateOne (
' 123 ' ,
$ validator
-> validation ()
// can be an integer or float or a string that is numeric
// this example is only for demonstration only,
// the same result can be achieved using numeric() only
-> integer ()-> or ()-> float ()-> or ()-> group (
fn ( $ validation ) => $ validation -> string ()-> and ()-> numeric ()
)
)
-> toArray ();
// $result would look something like this:
[
' value ' => ' 123 ' ,
' result ' => true ,
' validations ' => [
' integer ' => false ,
' float ' => false ,
' string ' => true ,
' numeric ' => true ,
],
' errors ' => [],
' metadata ' => [
' basis ' => ' integer|float|(string&numeric) ' ,
' rules ' => ' integer|float|(string&numeric) ' ,
' expression ' => ' 0|0|(1&1) ' ,
],
];
// you can also simply use the static helper Validator::validateData($data, $validation); use MAKS mighty Validator ;
use App Service HaveIBeenPwnedService as PasswordService ;
$ validator = new Validator ();
$ data = [
' name ' => ' John Doe ' ,
' age ' => 32 ,
' email ' => ' [email protected] ' ,
' username ' => ' john.doe ' ,
' password ' => ' Secret@123 ' ,
' image ' => ' /path/to/image.png ' ,
' submission ' => ' now ' ,
' consent ' => ' yes ' ,
' data ' => [
' nickname ' => ' JOE ' ,
' number ' => 7 ,
' hobbies ' => [
' coding ' ,
' cooking ' ,
' reading ' ,
]
],
];
$ validations = [
' name ' => $ validator -> validation ()-> required ()-> string ()-> stringCharset ([ ' UTF-8 ' , ' ASCII ' ])-> pessimistic (),
// or using mVEL => required&string&string.charset:'["UTF-8","ASCII"]'
' age ' => $ validator -> validation ()-> required ()-> integer ()-> min ( 18 ),
// or using mVEL => required&integer&min:18
' email ' => $ validator -> validation ()-> required ()-> email ()-> macro ( ' gmail ' ),
// or using mVEL => required&email&[gmail]
' username ' => $ validator -> validation ()-> required ()-> username (),
// or using mVEL => required&username
' password ' => $ validator -> validation ()-> required ()-> password ()-> callback ( fn ( $ input ) => !PasswordService:: isPwned ( $ input )),
// or using mVEL => required&password (NOTE: callback ist not possible, it requires a Validation::class instance that is bound to the Validator::class instance)
' image ' => $ validator -> validation ()-> null ()-> xor ()-> group ( fn () => $ this -> image ()-> imageDimensions ( 1920 , 1080 , ' <= ' )),
// or using mVEL => null^(image&image.dimensions:1920,1080,"<=")
' submission ' => $ validator -> validation ()-> required ()-> datetime ()-> datetimeLt ( ' 2022-12-07 ' ),
// or using mVEL => required&datetime&datetime.lt:"2022-12-07"
' consent ' => $ validator -> validation ()-> assert ( ' ${age.value} ' , 18 , ' >= ' )-> or ()-> accepted ()-> or ()-> assertEquals ( ' ${this} ' , ' granted ' )-> optimistic (),
// or using mVEL => ?assert:${age.value},18,">="|accepted|assert.equals:${this},"granted"
' data ' => $ validator -> validation ()-> required ()-> array ()-> arrayHasKey ( ' nickname ' ),
// or using mVEL => required&array&array.hasKey:"nickname"
' data.* ' => $ validator -> validation ()-> scalar ()-> or ()-> array ()-> optimistic (),
// or using mVEL => ?scalar|array
' data.nickname ' => $ validator -> validation ()-> string ()-> min ( 2 )-> max ( 32 ),
// or using mVEL => string&min:2&max:32
' data.hobbies.* ' => $ validator -> validation ()-> ifEq ( ' ${data.hobbies.validations.array} ' , false )-> or ()-> group ( fn () => $ this -> string ()-> min ( 3 )),
// or using mVEL => if.eq:${data.hobbies.validations.array},false|(string&min:3)
];
$ labels = [
' name ' => ' Name ' ,
' age ' => ' Age ' ,
' email ' => ' E-Mail ' ,
' password ' => ' Password ' ,
' image ' => ' Image ' ,
' data ' => ' Data ' ,
' data.* ' => ' Value of data ' ,
' consent ' => ' Consent ' ,
];
$ messages = [
' * ' => [ // this will be expanded for all fields
' required ' => ' ${@label} is a required field. ' ,
],
' age ' => [
' min ' => ' ${@label} must be at least ${@arguments.0}. ' ,
],
' username ' => [
' matches ' => ' ${@label} must contain letters, numbers, and the following characters ".-_" only. ' ,
],
' consent ' => [
' assert ' => ' You must be at least ${@arguments.1} years old to submit this form. ' ,
]
];
$ validator
-> setData ( $ data )
-> setValidations ( $ validations )
-> setMessages ( $ messages )
-> setLabels ( $ labels )
-> validate ();
$ results = $ validator -> getResults ();
// $result should look something like this:
[
// this will actually be a Result object
// array syntax is used here for demonstration purposes
' name ' => [
' key ' => ' name ' ,
' value ' => ' John Doe ' ,
' result ' => true ,
' validations ' => [
' required ' => true ,
' string ' => true ,
' string.charset ' => true ,
],
' errors ' => [],
' metadata ' => [
' basis ' => ' !required&string&string.charset:["UTF-8","ASCII"] ' ,
' rules ' => ' required&string&string.charset:["UTF-8","ASCII"] ' ,
' expression ' => ' 1&1&1 ' ,
],
],
// other validations ...
];
// you can also simply use the static helper Validator::validateData($data, $validations);
Подсказка: при предоставлении переопределения сообщений для Validator::class рекомендуется использовать RuleValidation::class для установки ключей массива. Этот класс содержит имена всех mighty встроенных правил в виде констант класса.
Валидатор можно расширить тремя способами:
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) ' ,
],
],
];
Подсказка: ознакомьтесь с rules , aliases и macros Validator по умолчанию, чтобы увидеть больше примеров.
mighty состоит из более чем 250 правил/атрибутов, которые можно использовать для проверки любых данных или значений классов, констант классов, свойств и методов.
Атрибуты разделены на три основные группы:
Атрибуты общих ограничений расположены в пространстве имен MAKS mighty Validation .
В настоящее время эта группа состоит только из одного атрибута; это атрибут Constraint . Этот атрибут принимает выражение проверки для проверки данных, к которым он применяется. Это также базовый класс для всех остальных атрибутов.
Специальные атрибуты ограничений расположены в пространстве имен MAKS mighty ValidationConstraint .
Эта группа содержит атрибуты, выполняющие определенную работу, доступную только в контексте атрибутов. Он состоит из следующих атрибутов:
Rule : этот атрибут используется для проверки любых данных с использованием одного правила проверки. Это также базовый класс для всех атрибутов в группе атрибутов ограничения правил.Callback : этот атрибут используется для проверки любых данных с помощью функции обратного вызова.Valid : этот атрибут используется для проверки достоверности проверяемого объекта.Shape : этот атрибут используется для проверки формы массива или объекта. Обратите внимание, что это единственный атрибут, который проверяет набор значений (структурированные данные), а не одно значение.Compound : этот атрибут используется для объединения набора ограничений для создания выражения проверки. Ограничения можно комбинировать с помощью любого оператора, а также они могут иметь определенное поведение. Он служит объектно-ориентированным способом создания выражения проверки.
Примечание. Обратите внимание, что ограничения, которые разрешено использовать с атрибутами Shape::class и Compound::class должны быть фактическими экземплярами Constraint::class , Rule::class или Compound::class . Callback::class , Valid::class или Shape::class группы специальных атрибутов ограничения НЕ разрешены. Если вам нужна эта функция, откройте проблему, и мы обсудим ее реализацию.
Атрибуты ограничения правила расположены в пространстве имен MAKS mighty ValidationConstraintRule .
Эта группа содержит атрибуты, основанные на одном правиле проверки. Он состоит из большинства атрибутов, которые предоставляет mighty . Полный список см. в разделе «Проверки».
mighty имеет огромный список встроенных ограничений, и вам действительно редко понадобится что-то кроме того, что предоставляет mighty . Тем не менее, иногда возникает необходимость в специальном ограничении. Вот как этого можно добиться:
<?php
declare (strict_types= 1 );
namespace App Validation Constraint ;
use Attribute ;
use MAKS mighty Rule ;
use MAKS mighty Result ;
use MAKS mighty Validation Strategy ;
use MAKS mighty Validation Constraint ;
use MAKS mighty Validation Constraint ValidatesOne ;
// use the ValidatesMany interface if your Constraint returns a collection of Result objects
use MAKS mighty Validation Constraint ValidatesMany ;
#[Attribute(
Attribute:: TARGET_PROPERTY |
Attribute:: TARGET_METHOD
)]
class MyCustomConstraint extends Constraint implements ValidatesOne
{
public function __construct (
? string $ message = null ,
Strategy $ strategy = Strategy::FailFast,
) {
parent :: __construct (
validation: ' app.myCustomConstraint ' ,
messages: [ ' app.myCustomConstraint ' => $ message ],
strategy: $ strategy
);
}
public function validate ( mixed $ value = null ): Result
{
// it is really up to you, how you handle this
// you will just work with a normal mighty Validator
// here we're just preparing the data to pass to the Validator
$ name = '' ;
$ data = [ $ name => $ value ];
$ validations = [ $ name => $ this -> validation ];
$ messages = [ $ name => [ $ this -> validation => $ this -> messages [ $ this -> validation ] ?? null ]];
$ labels = [ $ name => static ::class];
// you can reuse the built-in rules or
// add you own Rule that handles your custom logic
$ result = $ this
-> getValidator ()
-> addRule (
// see MAKS mighty Rule for more info
( new Rule ())
-> setName ( ' app.myCustomConstraint ' )
-> setCallback ( static fn ( $ input ) => $ input /* here comes your logic */ )
-> setParameters ([ ' @input ' ]) // rule callback dependencies
-> setMessage ( ' ${@label} must follow my custom constraint validation. ' ) // this is the default message
)
-> setData ( $ data )
-> setValidations ( $ validations )
-> setMessages ( $ messages )
-> setLabels ( $ labels )
-> validate ();
return $ result [ $ name ]; // if you implement ValidatesMany, you will just return $result
}
}
Примечание. Пользовательские ограничения считаются частью группы специальных атрибутов ограничений (т. е. их нельзя использовать с ограничениями Shape::class и Compound::class или внутри них).
В следующей таблице перечислены все доступные правила, включая их эквиваленты атрибутов и методов:
Validation::classConstraint::class и Constraint/Rule/*| Нет. | Правило | Описание | Атрибут/Метод |
|---|---|---|---|
| 001 | Имя: nullИспользование: null | Утверждает, что ввод имеет значение NULL. | Атрибут:NullConstraint::classМетод: Validation::null() |
| 002 | Имя: booleanИспользование: boolean | Утверждает, что входные данные являются логическими значениями. | Атрибут:Boolean::classМетод: Validation::boolean() |
| 003 | Имя: integerИспользование: integer | Утверждает, что входные данные являются целым числом. | Атрибут:Integer::classМетод: Validation::integer() |
| 004 | Название: floatИспользование: float | Утверждает, что входные данные являются числом с плавающей запятой. | Атрибут:FloatConstraint::classМетод: Validation::float() |
| 005 | Имя: numericИспользование: numeric | Утверждает, что ввод является числовым. | Атрибут:NumericConstraint::classМетод: Validation::numeric() |
| 006 | Имя: stringИспользование: string | Утверждает, что входные данные являются строкой. | Атрибут:StringConstraint::classМетод: Validation::string() |
| 007 | Имя: scalarИспользование: scalar | Утверждает, что входные данные являются скалярными. | Атрибут:Scalar::classМетод: Validation::scalar() |
| 008 | Имя: arrayИспользование: array | Утверждает, что входные данные являются массивом. | Атрибут:ArrayConstraint::classМетод: Validation::array() |
| 009 | Название: objectИспользование: object | Утверждает, что входные данные являются объектом. | Атрибут:ObjectConstraint::classМетод: Validation::object() |
| 010 | Имя: callableИспользование: callable | Утверждает, что ввод является вызываемым. | Атрибут:CallableConstraint::classМетод: Validation::callable() |
| 011 | Имя: iterableИспользование: iterable | Утверждает, что входные данные являются итерируемыми. | Атрибут:IterableConstraint::classМетод: Validation::iterable() |
| 012 | Название: countableИспользование: countable | Утверждает, что входные данные являются счетными. | Атрибут:Countable::classМетод: Validation::countable() |
| 013 | Название: resourceИспользование: resource | Утверждает, что входные данные являются ресурсом. | Атрибут:ResourceConstraint::classМетод: Validation::resource() |
| 014 | Имя: typeИспользование: type:'["int","float"]' | Утверждает, что входные данные относятся к одному из заданных типов. | Атрибут:Type::classМетод: Validation::type(string|array $type) |
| 015 | Имя: type.debugИспользование: type.debug:string | Утверждает, что входные данные имеют заданный тип, используя get_debug_type(). | Атрибут:TypeDebug::classМетод: Validation::typeDebug(string $type) |
| 016 | Имя: alphaИспользование: alpha | Утверждает, что входные данные состоят только из буквенных символов. | Атрибут:Alpha::classМетод: Validation::alpha() |
| 017 | Имя: alnumИспользование: alnum | Утверждает, что ввод состоит только из буквенно-цифровых символов. | Атрибут:Alnum::classМетод: Validation::alnum() |
| 018 | Название: lowerИспользование: lower | Утверждает, что входные данные состоят только из символов нижнего регистра. | Атрибут:Lower::classМетод: Validation::lower() |
| 019 | Название: upperИспользование: upper | Утверждает, что входные данные состоят только из символов верхнего регистра. | Атрибут:Upper::classМетод: Validation::upper() |
| 020 | Имя: cntrlИспользование: cntrl | Утверждает, что ввод состоит только из управляющих символов. | Атрибут:Cntrl::classМетод: Validation::cntrl() |
| 021 | Название: spaceИспользование: space | Утверждает, что входные данные состоят только из пробельных символов. | Атрибут:Space::classМетод: Validation::space() |
| 022 | Название: punctИспользование: punct | Утверждает, что ввод состоит только из символов пунктуации. | Атрибут:Punct::classМетод: Validation::punct() |
| 023 | Название: graphИспользование: graph | Утверждает, что ввод состоит только из графических символов (символов, которые создают видимый вывод). | Атрибут:Graph::classМетод: Validation::graph() |
| 024 | Название: printИспользование: print | Утверждает, что входные данные состоят только из печатных символов. | Атрибут:PrintConstraint::classМетод: Validation::print() |
| 025 | Название: digitИспользование: digit | Утверждает, что ввод состоит только из цифр (цифровых символов). | Атрибут:Digit::classМетод: Validation::digit() |
| 026 | Имя: xdigitИспользование: xdigit | Утверждает, что входные данные представляют собой шестнадцатеричные цифры. | Атрибут:Xdigit::classМетод: Validation::xdigit() |
| 027 | Имя: booleanLikeИспользование: booleanLike | Утверждает, что входные данные представляют собой значение, которое можно проанализировать как логическое значение (ИСТИНА: правда, «истина», «1», «включено», «да»; ЛОЖЬ: ложь, «ложь», «0», «выключено»). , «нет», «», ноль). | Атрибут:BooleanLike::classМетод: Validation::booleanLike() |
| 028 | Имя: integerLikeИспользование: integerLike:0,100 | Утверждает, что входные данные представляют собой значение, которое можно проанализировать как целое число в указанном диапазоне. | Атрибут:IntegerLike::classМетод: Validation::integerLike(int $min = PHP_INT_MIN, int $max = PHP_INT_MAX) |
| 029 | Имя: integerLike.allowOctalИспользование: integerLike.allowOctal:0,100 | Утверждает, что входные данные представляют собой значение, которое можно проанализировать как целое число в указанном диапазоне и может иметь восьмеричную запись. | Атрибут:IntegerLikeAllowOctal::classМетод: Validation::integerLikeAllowOctal(int $min = PHP_INT_MIN, int $max = PHP_INT_MAX) |
| 030 | Имя: integerLike.allowHexИспользование: integerLike.allowHex:0,100 | Утверждает, что входные данные представляют собой значение, которое можно проанализировать как целое число в указанном диапазоне и которое может быть в шестнадцатеричном формате. | Атрибут:IntegerLikeAllowHex::classМетод: Validation::integerLikeAllowHex(int $min = PHP_INT_MIN, int $max = PHP_INT_MAX) |
| 031 | Имя: floatLikeИспользование: floatLike:1.0,100.0 | Утверждает, что входные данные представляют собой значение, которое можно проанализировать как число с плавающей запятой в пределах указанного диапазона. | Атрибут:FloatLike::classМетод: Validation::floatLike(float $min = PHP_FLOAT_MIN, float $max = PHP_FLOAT_MAX) |
| 032 | Имя: floatLike.allowThousandsИспользование: floatLike.allowThousands:1.0,100.0 | Утверждает, что входные данные представляют собой значение, которое можно проанализировать как число с плавающей запятой в пределах указанного диапазона. | Атрибут:FloatLikeAllowThousands::classМетод: Validation::floatLikeAllowThousands(float $min = PHP_FLOAT_MIN, float $max = PHP_FLOAT_MAX) |
| 033 | Имя: regexpИспользование: regexp:"/[az]/i" | Утверждает, что входные данные соответствуют регулярному выражению, совместимому с Perl. | Атрибут:Regexp::classМетод: Validation::regexp(string $pattern) |
| 034 | Имя: ipИспользование: ip | Утверждает, что входные данные являются IP-адресом. | Атрибут:Ip::classМетод: Validation::ip() |
| 035 | Имя: ip.v4Использование: ip.v4 | Утверждает, что входные данные являются адресом IPv4. | Атрибут:IpV4::classМетод: Validation::ipV4() |
| 036 | Имя: ip.v6Использование: ip.v6 | Утверждает, что входные данные являются адресом IPv6. | Атрибут:IpV6::classМетод: Validation::ipV6() |
| 037 | Имя: ip.notReservedИспользование: ip.notReserved | Утверждает, что входной IP-адрес находится вне диапазона зарезервированных IP-адресов. | Атрибут:IpNotReserved::classМетод: Validation::ipNotReserved() |
| 038 | Имя: ip.notPrivateИспользование: ip.notPrivate | Утверждает, что входной IP-адрес находится за пределами диапазона частных IP-адресов. | Атрибут:IpNotPrivate::classМетод: Validation::ipNotPrivate() |
| 039 | Имя: macИспользование: mac | Утверждает, что ввод является MAC-адресом. | Атрибут:Mac::classМетод: Validation::mac() |
| 040 | Имя: urlИспользование: url | Утверждает, что входные данные являются URL-адресом. | Атрибут:Url::classМетод: Validation::url() |
| 041 | Имя: url.withPathИспользование: url.withPath | Утверждает, что входные данные представляют собой URL-адрес, содержащий путь. | Атрибут:UrlWithPath::classМетод: Validation::urlWithPath() |
| 042 | Имя: url.withQueryИспользование: url.withQuery | Утверждает, что входные данные представляют собой URL-адрес, содержащий запрос. | Атрибут:UrlWithQuery::classМетод: Validation::urlWithQuery() |
| 043 | Имя: emailИспользование: email | Утверждает, что входные данные — это адрес электронной почты. | Атрибут:Email::classМетод: Validation::email() |
| 044 | Имя: email.withUnicodeИспользование: email.withUnicode | Утверждает, что входные данные представляют собой адрес электронной почты (разрешен Юникод). | Атрибут:EmailWithUnicode::classМетод: Validation::emailWithUnicode() |
| 045 | Имя: domainИспользование: domain | Утверждает, что входные данные являются доменом. | Атрибут:Domain::classМетод: Validation::domain() |
| 046 | Имя: domain.isActiveИспользование: domain.isActive | Утверждает, что входные данные являются активным доменом. Работает с доменами и электронной почтой. | Атрибут:DomainIsActive::classМетод: Validation::domainIsActive() |
| 047 | Имя: fileИспользование: file | Утверждает, что входные данные являются файлом (может быть файлом, ссылкой или каталогом). | Атрибут:File::classМетод: Validation::file() |
| 048 | Имя: file.isFileИспользование: file.isFile | Утверждает, что входные данные являются файлом. | Атрибут:FileIsFile::classМетод: Validation::fileIsFile() |
| 049 | Имя: file.isLinkИспользование: file.isLink | Утверждает, что входные данные являются ссылкой. | Атрибут:FileIsLink::classМетод: Validation::fileIsLink() |
| 050 | Имя: file.isDirectoryИспользование: file.isDirectory | Утверждает, что входные данные являются каталогом. | Атрибут:FileIsDirectory::classМетод: Validation::fileIsDirectory() |
| 051 | Имя: file.isExecutableИспользование: file.isExecutable | Утверждает, что входные данные являются файлом и являются исполняемыми. | Атрибут:FileIsExecutable::classМетод: Validation::fileIsExecutable() |
| 052 | Имя: file.isWritableИспользование: file.isWritable | Утверждает, что входные данные являются файлом и доступны для записи. | Атрибут:FileIsWritable::classМетод: Validation::fileIsWritable() |
| 053 | Имя: file.isReadableИспользование: file.isReadable | Утверждает, что входные данные являются файлом и доступны для чтения. | Атрибут:FileIsReadable::classМетод: Validation::fileIsReadable() |
| 054 | Имя: file.isUploadedИспользование: file.isUploaded | Утверждает, что входные данные представляют собой файл, загруженный через HTTP POST. | Атрибут:FileIsUploaded::classМетод: Validation::fileIsUploaded() |
| 055 | Имя: file.sizeИспользование: file.size:1024 | Утверждает, что входные данные представляют собой файл и его размер равен заданному размеру в байтах. | Атрибут:FileSize::classМетод: Validation::fileSize(int $sizeInBytes) |
| 056 | Имя: file.size.lteИспользование: file.size.lte:1024 | Утверждает, что входные данные являются файлом и его размер меньше или равен заданному размеру в байтах. | Атрибут:FileSizeLte::classМетод: Validation::fileSizeLte(int $sizeInBytes) |
| 057 | Имя: file.size.gteИспользование: file.size.gte:1024 | Утверждает, что входные данные являются файлом и его размер больше или равен заданному размеру в байтах. | Атрибут:FileSizeGte::classМетод: Validation::fileSizeGte(int $sizeInBytes) |
| 058 | Имя: file.dirnameИспользование: file.dirname:/path/to/dir | Утверждает, что входные данные являются файлом и его имя каталога равно заданному имени каталога. | Атрибут:FileDirname::classМетод: Validation::fileDirname(string $dirname) |
| 059 | Имя: file.basenameИспользование: file.basename:file.ext | Утверждает, что входные данные являются файлом и его базовое имя равно заданному базовому имени. | Атрибут:FileBasename::classМетод: Validation::fileBasename(string $basename) |
| 060 | Имя: file.filenameИспользование: file.filename:file | Утверждает, что входные данные являются файлом и его имя равно заданному имени файла. | Атрибут:FileFilename::classМетод: Validation::fileFilename(string $filename) |
| 061 | Имя: file.extensionИспользование: file.extension:ext | Утверждает, что входные данные являются файлом и его расширение равно заданному расширению. | Атрибут:FileExtension::classМетод: Validation::fileExtension(string $extension) |
| 062 | Имя: file.mimeИспользование: file.mime:text/plain | Утверждает, что входные данные являются файлом и его тип MIME является одним из заданных типов MIME. | Атрибут:FileMime::classМетод: Validation::fileMime(string|array $mine) |
| 063 | Название: imageИспользование: image | Утверждает, что входные данные представляют собой файл изображения (jpg, jpeg, png, gif, bmp, svg или webp). | Атрибут:Image::classМетод: Validation::image() |
| 064 | Имя: image.widthИспользование: image.width:1920 | Утверждает, что входные данные являются изображением и его ширина равна заданной ширине в пикселях. | Атрибут:ImageWidth::classМетод: Validation::imageWidth(int $width) |
| 065 | Имя: image.width.lteИспользование: image.width.lte:1920 | Утверждает, что входные данные являются изображением и его ширина меньше или равна заданной ширине в пикселях. | Атрибут:ImageWidthLte::classМетод: Validation::imageWidthLte(int $width) |
| 066 | Имя: image.width.gteИспользование: image.width.gte:1920 | Утверждает, что входные данные являются изображением и его ширина больше или равна заданной ширине в пикселях. | Атрибут:ImageWidthGte::classМетод: Validation::imageWidthGte(int $width) |
| 067 | Имя: image.heightИспользование: image.height:1080 | Утверждает, что входные данные являются изображением и его высота равна заданной высоте в пикселях. | Атрибут:ImageHeight::classМетод: Validation::imageHeight(int $height) |
| 068 | Имя: image.height.lteИспользование: image.height.lte:1080 | Утверждает, что входные данные являются изображением и его высота меньше или равна заданной высоте в пикселях. | Атрибут:ImageHeightLte::classМетод: Validation::imageHeightLte(int $height) |
| 069 | Имя: image.height.gteИспользование: image.height.gte:1080 | Утверждает, что входные данные являются изображением и его высота больше или равна заданной высоте в пикселях. | Атрибут:ImageHeightGte::classМетод: Validation::imageHeightGte(int $height) |
| 070 | Имя: image.dimensionsИспользование: image.dimensions:1920,1080,== | Утверждает, что входные данные являются изображением и его размеры меньше, равны или больше заданных ширины и высоты в пикселях. | Атрибут:ImageDimensions::classМетод: Validation::imageDimensions(int $width, int $height, string $operator = '==') |
| 071 | Имя: image.ratioИспользование: image.ratio:16:9 | Утверждает, что входные данные представляют собой изображение и его соотношение сторон равно заданному соотношению (соотношение должно быть указано в виде дроби, например «16/9»). | Атрибут:ImageRatio::classМетод: Validation::imageRatio(string $ratio) |
| 072 | Имя: ifИспользование: if:7,7,== | Проверяет условие между первым аргументом и вторым аргументом, оператор условия также можно указать в качестве третьего аргумента. | Атрибут:IfConstraint::classМетод: Validation::if(mixed $actual, mixed $expected = true, string $operator = '==') |
| 073 | Имя: if.eqИспользование: if.eq:3,3 | Проверяет условие между первым аргументом и вторым аргументом, оператор условия — «==". | Атрибут:IfEq::classМетод: Validation::ifEq(mixed $actual, mixed $expected) |
| 074 | Имя: if.neqИспользование: if.neq:1,2 | Проверяет условие между первым аргументом и вторым аргументом, оператор условия — «!=". | Атрибут:IfNeq::classМетод: Validation::ifNeq(mixed $actual, mixed $expected) |
| 075 | Имя: if.idИспользование: if.id:3,3 | Проверяет условие между первым аргументом и вторым аргументом, оператор условия — «===". | Атрибут:IfId::classМетод: Validation::ifId(mixed $actual, mixed $expected) |
| 076 | Имя: if.nidИспользование: if.nid:1,2 | Проверяет условие между первым аргументом и вторым аргументом, оператор условия — «!==". | Атрибут:IfNid::classМетод: Validation::ifNid(mixed $actual, mixed $expected) |
| 077 | Имя: if.gtИспользование: if.gt:2,1 | Проверяет условие между первым аргументом и вторым аргументом, оператор условия — «>». | Атрибут:IfGt::classМетод: Validation::ifGt(mixed $actual, mixed $expected) |
| 078 | Имя: if.gteИспользование: if.gte:2,2 | Проверяет условие между первым аргументом и вторым аргументом, оператор условия — «>=". | Атрибут:IfGte::classМетод: Validation::ifGte(mixed $actual, mixed $expected) |
| 079 | Название: if.ltИспользование: if.lt:1,2 | Проверяет условие между первым аргументом и вторым аргументом, оператор условия — «<». | Атрибут:IfLt::classМетод: Validation::ifLt(mixed $actual, mixed $expected) |
| 080 | Имя: if.lteИспользование: if.lte:1,2 | Проверяет условие между первым аргументом и вторым аргументом, оператор условия — «<=". | Атрибут:IfLte::classМетод: Validation::ifLte(mixed $actual, mixed $expected) |
| 081 | Название: emptyИспользование: empty | Утверждает, что ввод пуст, используя языковую конструкцию пустой() (пустой, т. е. пустая строка, пустой массив, ложь, ноль или 0). | Атрибут:EmptyConstraint::classМетод: Validation::empty() |
| 082 | Имя: requiredИспользование: required | Утверждает, что ввод является обязательным (не пустым, т. е. не пустой строкой и не нулевым). | Атрибут:Required::classМетод: Validation::required() |
| 083 | Имя: allowedИспользование: allowed | Утверждает, что ввод разрешен (может быть пустым или иметь любое значение, ноль и пустая строка считаются допустимыми значениями). | Атрибут:Allowed::classМетод: Validation::allowed() |
| 084 | Название: forbiddenИспользование: forbidden | Утверждает, что ввод запрещен (имеет значение NULL или отсутствует). | Атрибут:Forbidden::classМетод: Validation::forbidden() |
| 085 | Имя: acceptedИспользование: accepted | Утверждает, что ввод принят (равен: «вкл», «да», «да», «да», «йо», «ок», «окей», «да», 1 или «1», «истина» или « true") обратите внимание, что строки обрабатываются без учета регистра. | Атрибут:Accepted::classМетод: Validation::accepted() |
| 086 | Имя: declinedИспользование: declined | Утверждает, что ввод отклонен (равен: «выключено», «нет», «нет», «нет», «не», «нет», 0 или «0», «ложь» или «ложь»). Обратите внимание, что строки обрабатываются. без учета регистра. | Атрибут:Declined::classМетод: Validation::declined() |
| 087 | Название: bitИспользование: bit | Утверждает, что ввод является битовым (равен: 1 или «1», истина; 0 или «0», ложь). | Атрибут:Bit::classМетод: Validation::bit() |
| 088 | Имя: bit.isOnИспользование: bit.isOn | Утверждает, что входной бит является включенным (равен: true, 1 или «1»). | Атрибут:BitIsOn::classМетод: Validation::bitIsOn() |
| 089 | Имя: bit.isOffИспользование: bit.isOff | Утверждает, что входной бит отключен (равен: ложь, 0 или «0»). | Атрибут:BitIsOff::classМетод: Validation::bitIsOff() |
| 090 | Имя: equalsИспользование: equals:value | Утверждает, что входное значение равно заданному значению. Работает со скалярными типами и null. Оператор сравнения — «==". | Атрибут:Equals::classМетод: Validation::equals(string|int|float|bool|null $value) |
| 091 | Название: matchesИспользование: matches:'"/^[a-zA-Z0-9]+$/"' | Утверждает, что ввод соответствует заданному шаблону. Работает только со строками. | Атрибут:Matches::classМетод: Validation::matches(string $pattern) |
| 092 | Название: inИспользование: in:val1,val2,... | Утверждает, что входные данные находятся в заданных значениях. Работает со скалярными типами и null. | Атрибут:In::classМетод: Validation::in(string|int|float|bool|null ...$values) |
| 093 | Имя: countИспользование: count:3 | Утверждает, что количество входных данных равно заданному значению. Работает со всеми типами данных (нуль: 0; логическое значение: 0 или 1; число с плавающей запятой/целое число: числовое значение; строка: количество символов; массив/счетный: количество элементов; объект: количество доступных свойств). | Атрибут:Count::classМетод: Validation::count(int $count) |
| 094 | Имя: minИспользование: min:3 | Утверждает, что количество входных данных больше или равно заданному значению. Работает со всеми типами данных (нуль: 0; логическое значение: 0 или 1; число с плавающей запятой/целое число: числовое значение; строка: количество символов; массив/счетный: количество элементов; объект: количество доступных свойств). | Атрибут:Min::classМетод: Validation::min(int|float $count) |
| 095 | Имя: maxИспользование: max:3 | Утверждает, что количество входных данных меньше или равно заданному значению. Работает со всеми типами данных (нуль: 0; логическое значение: 0 или 1; число с плавающей запятой/целое число: числовое значение; строка: количество символов; массив/счетный: количество элементов; объект: количество доступных свойств). | Атрибут:Max::classМетод: Validation::max(int|float $count) |
| 096 | Название: betweenИспользование: between:3,7 | Утверждает, что количество входных данных находится между заданными значениями. Работает со всеми типами данных (нуль: 0; логическое значение: 0 или 1; число с плавающей запятой/целое число: числовое значение; строка: количество символов; массив/счетный: количество элементов; объект: количество доступных свойств). | Атрибут:Between::classМетод: Validation::between(int|float $min, int|float $max) |
| 097 | Имя: number.isPositiveИспользование: number.isPositive | Утверждает, что входные данные являются положительным числом. | Атрибут:NumberIsPositive::classМетод: Validation::numberIsPositive() |
| 098 | Имя: number.isNegativeИспользование: number.isNegative | Утверждает, что входные данные являются отрицательным числом. | Атрибут:NumberIsNegative::classМетод: Validation::numberIsNegative() |
| 099 | Имя: number.isEvenИспользование: number.isEven | Утверждает, что входные данные являются четным числом. | Атрибут:NumberIsEven::classМетод: Validation::numberIsEven() |
| 100 | Имя: number.isOddИспользование: number.isOdd | Утверждает, что входные данные являются нечетным числом. | Атрибут:NumberIsOdd::classМетод: Validation::numberIsOdd() |
| 101 | Имя: number.isMultipleOfИспользование: number.isMultipleOf:3 | Утверждает, что входное значение кратно заданному числу. | Атрибут:NumberIsMultipleOf::classМетод: Validation::numberIsMultipleOf(float $number) |
| 102 | Имя: number.isFiniteИспользование: number.isFinite | Утверждает, что входные данные являются конечным числом. | Атрибут:NumberIsFinite::classМетод: Validation::numberIsFinite() |
| 103 | Имя: number.isInfiniteИспользование: number.isInfinite | Утверждает, что входные данные представляют собой бесконечное число. | Атрибут:NumberIsInfinite::classМетод: Validation::numberIsInfinite() |
| 104 | Имя: number.isNanИспользование: number.isNan | Утверждает, что входные данные не являются числом. | Атрибут:NumberIsNan::classМетод: Validation::numberIsNan() |
| 105 | Имя: string.charsetИспользование: string.charset:UTF-8 | Утверждает, что ввод закодирован в одной из заданных кодировок (включая псевдонимы). Проверка осуществляется с учетом регистра. | Атрибут:StringCharset::classМетод: Validation::stringCharset(string|array $charset) |
| 106 | Имя: string.containsИспользование: string.contains:substring | Утверждает, что входные данные содержат заданную подстроку. Можно указать второй логический аргумент для включения строгого режима (с учетом регистра). | Атрибут:StringContains::classМетод: Validation::stringContains(string $substring, bool $strict = false) |
| 107 | Имя: string.startsWithИспользование: string.startsWith:substring,1 | Утверждает, что ввод начинается с заданной подстроки. Можно указать второй логический аргумент для включения строгого режима (с учетом регистра). | Атрибут:StringStartsWith::classМетод: Validation::stringStartsWith(string $substring, bool $strict = false) |
| 108 | Имя: string.endsWithИспользование: string.endsWith:substring,0 | Утверждает, что ввод заканчивается заданной подстрокой. Можно указать второй логический аргумент для включения строгого режима (с учетом регистра). | Атрибут:StringEndsWith::classМетод: Validation::stringEndsWith(string $substring, bool $strict = false) |
| 109 | Имя: string.lengthИспользование: string.length:3 | Утверждает, что входные данные представляют собой строку точно заданной длины. | Атрибут:StringLength::classМетод: Validation::stringLength(int $length) |
| 110 | Имя: string.wordsCountИспользование: string.wordsCount:3 | Утверждает, что входные данные представляют собой строку, содержащую ровно заданное количество слов. | Атрибут:StringWordsCount::classМетод: Validation::stringWordsCount(int $count) |
| 111 | Имя: array.hasKeyИспользование: array.hasKey:key | Утверждает, что входной массив имеет заданный ключ. | Атрибут:ArrayHasKey::classМетод: Validation::arrayHasKey(string|int $key) |
| 112 | Имя: array.hasValueИспользование: array.hasValue:value | Утверждает, что входной массив содержит заданное значение. Работает со скалярными типами. | Атрибут:ArrayHasValue::classМетод: Validation::arrayHasValue(mixed $value) |
| 113 | Имя: array.hasDistinctИспользование: array.hasDistinct:key | Утверждает, что входные данные представляют собой многомерный массив, содержащий различные значения данного ключа. | Атрибут:ArrayHasDistinct::classМетод: Validation::arrayHasDistinct(string|int $key) |
| 114 | Имя: array.isAssociativeИспользование: array.isAssociative | Утверждает, что входные данные являются ассоциативным массивом. | Атрибут:ArrayIsAssociative::classМетод: Validation::arrayIsAssociative() |
| 115 | Имя: array.isSequentialИспользование: array.isSequential | Утверждает, что входные данные представляют собой последовательный массив. | Атрибут:ArrayIsSequential::classМетод: Validation::arrayIsSequential() |
| 116 | Имя: array.isUniqueИспользование: array.isUnique | Утверждает, что входной массив содержит уникальные значения. Работает только с одномерными массивами. | Атрибут:ArrayIsUnique::classМетод: Validation::arrayIsUnique() |
| 117 | Имя: array.subsetИспользование: array.subset:'{"a":1,"b":2}' | Утверждает, что входные данные представляют собой массив, содержащий заданное подмножество. Обратите внимание, что эта проверка применяется только к первому измерению массива. | Атрибут:ArraySubset::classМетод: Validation::arraySubset(array $subset) |
| 118 | Имя: object.hasPropertyИспользование: object.hasProperty:property | Утверждает, что входные данные имеют заданное свойство. | Атрибут:ObjectHasProperty::classМетод: Validation::objectHasProperty(string $property) |
| 119 | Имя: object.hasMethodИспользование: object.hasMethod:method | Утверждает, что входные данные имеют заданный метод. | Атрибут:ObjectHasMethod::classМетод: Validation::objectHasMethod(string $method) |
| 120 | Имя: object.isStringableИспользование: object.isStringable | Утверждает, что входные данные реализуют метод __toString(). | Атрибут:ObjectIsStringable::classМетод: Validation::objectIsStringable() |
| 121 | Имя: object.isInstanceOfИспользование: object.isInstanceOf:NamespaceClass | Утверждает, что входные данные являются экземпляром данного класса. | Атрибут:ObjectIsInstanceOf::classМетод: Validation::objectIsInstanceOf(string $classFQN) |
| 122 | Имя: object.isSubclassOfИспользование: object.isSubclassOf:NamespaceClass | Утверждает, что входные данные являются подклассом данного класса. | Атрибут:ObjectIsSubclassOf::classМетод: Validation::objectIsSubclassOf(string $classFQN) |
| 123 | Название: serializedИспользование: serialized | Утверждает, что входные данные представляют собой действительные сериализованные данные PHP. | Атрибут:Serialized::classМетод: Validation::serialized() |
| 124 | Имя: jsonИспользование: json | Утверждает, что входные данные являются допустимым JSON. | Атрибут:Json::classМетод: Validation::json() |
| 125 | Имя: base64Использование: base64 | Утверждает, что входные данные являются допустимой строкой в кодировке Base64. | Атрибут:Base64::classМетод: Validation::base64() |
| 126 | Имя: xmlИспользование: xml | Утверждает, что входные данные являются допустимым XML. | Атрибут:Xml::classМетод: Validation::xml() |
| 127 | Название: localeИспользование: locale | Утверждает, что ввод является допустимым идентификатором локали (по умолчанию: [ISO 639-1] или [ISO 639-1]_[ISO 3166-1 альфа-2], регистр не учитывается, ввод канонизируется перед проверкой (дефисы для подчеркивания, без точек и кодировки); строгий: [ISO 639-1] или [ISO 639-1]_[ISO 3166-1]. альфа-2], с учетом регистра, без канонизации. | Атрибут:Locale::classМетод: Validation::locale(bool $strict = false) |
| 128 | Название: languageИспользование: language | Утверждает, что ввод является допустимым кодом языка (по умолчанию: «ISO 639-1»; длинный: «ISO 639-2/T»). | Атрибут:Language::classМетод: Validation::language(bool $long = false) |
| 129 | Название: countryИспользование: country | Утверждает, что ввод является допустимым кодом страны (по умолчанию: «ISO 3166-1 альфа-2»; длинный: «ISO 3166-1 альфа-3»). | Атрибут:Country::classМетод: Validation::country(bool $long = false) |
| 130 | Название: timezoneИспользование: timezone | Утверждает, что входные данные являются допустимым идентификатором часового пояса (по умолчанию: без учета регистра; строго: с учетом регистра). | Атрибут:Timezone::classМетод: Validation::timezone(bool $strict = false) |
| 131 | Имя: datetimeИспользование: datetime | Утверждает, что входные данные являются допустимой строкой/объектом даты и времени. | Атрибут:Datetime::classМетод: Validation::datetime() |
| 132 | Имя: datetime.eqИспользование: datetime.eq:"2015-01-01" | Утверждает, что входные данные равны заданной строке даты и времени. | Атрибут:DatetimeEq::classМетод: Validation::datetimeEq(string $datetime) |
| 133 | Имя: datetime.ltИспользование: datetime.lt:tomorrow | Утверждает, что входные данные представляют собой строку/объект даты и времени, меньшую (до) заданной строки даты и времени. | Атрибут:DatetimeLt::classМетод: Validation::datetimeLt(string $datetime) |
| 134 | Имя: datetime.lteИспользование: datetime.lte:tomorrow | Утверждает, что входные данные представляют собой строку/объект даты и времени, меньшую (до) или равную заданной строке даты и времени. | Атрибут:DatetimeLte::classМетод: Validation::datetimeLte(string $datetime) |
| 135 | Имя: datetime.gtИспользование: datetime.gt:today | Утверждает, что входные данные представляют собой строку/объект даты и времени, большую, чем (после) заданной строки даты и времени. | Атрибут:DatetimeGt::classМетод: Validation::datetimeGt(string $datetime) |
| 136 | Имя: datetime.gteИспользование: datetime.gte:today | Утверждает, что входные данные представляют собой строку/объект даты и времени, большую, чем (после) или равную заданной строке даты и времени. | Атрибут:DatetimeGte::classМетод: Validation::datetimeGte(string $datetime) |
| 137 | Имя: datetime.birthdayИспользование: datetime.birthday | Утверждает, что входные данные представляют собой строку/объект даты и времени, у которого сегодня день рождения. Ввод предпочтительно должен быть в формате «ГГГГ-ММ-ДД». | Атрибут:DatetimeBirthday::classМетод: Validation::datetimeBirthday() |
| 138 | Имя: datetime.formatИспользование: datetime.format:"Ymd H:i:s" | Утверждает, что входные данные представляют собой допустимую дату/время в заданном формате. | Атрибут:DatetimeFormat::classМетод: Validation::datetimeFormat(string $format) |
| 139 | Имя: datetime.format.globalИспользование: datetime.format.global | Утверждает, что входные данные выглядят как допустимая глобальная строка даты и времени, как определено в спецификации HTML5. | Атрибут:DatetimeFormatGlobal::classМетод: Validation::datetimeFormatGlobal() |
| 140 | Имя: datetime.format.localИспользование: datetime.format.local | Утверждает, что входные данные выглядят как допустимая локальная строка даты и времени, как определено в спецификации HTML5. | Атрибут:DatetimeFormatLocal::classМетод: Validation::datetimeFormatLocal() |
| 141 | Имя: datestampИспользование: datestamp | Утверждает, что ввод выглядит как человеческая отметка даты в формате DMY или MDY, разделенная точкой, тире или косой чертой. | Атрибут:Datestamp::classМетод: Validation::datestamp() |
| 142 | Имя: datestamp.ymdИспользование: datestamp.ymd | Утверждает, что ввод выглядит как отметка даты в формате YMD, разделенная точкой, тире или косой чертой. | Атрибут:DatestampYmd::classМетод: Validation::datestampYmd() |
| 143 | Имя: datestamp.dmyИспользование: datestamp.dmy | Утверждает, что ввод выглядит как отметка даты в формате DMY, разделенная точкой, тире или косой чертой. | Атрибут:DatestampDmy::classМетод: Validation::datestampDmy() |
| 144 | Имя: datestamp.mdyИспользование: datestamp.mdy | Утверждает, что ввод выглядит как отметка даты в формате человеческого MDY, разделенная точкой, тире или косой чертой. | Атрибут:DatestampMdy::classМетод: Validation::datestampMdy() |
| 145 | Имя: timestampИспользование: timestamp | Утверждает, что ввод выглядит как временная метка человека в 24- или 12-часовом формате с секундами или без них. | Атрибут:Timestamp::classМетод: Validation::timestamp() |
| 146 | Имя: timestamp.12Использование: timestamp.12 | Утверждает, что ввод выглядит как временная метка человека, 12-часовой формат с секундами или без них и опционально AM/PM. | Атрибут:Timestamp12::classМетод: Validation::timestamp12() |
| 147 | Имя: timestamp.hmsИспользование: timestamp.hms | Утверждает, что ввод выглядит как временная метка человека в 24- или 12-часовом формате с секундами. | Атрибут:TimestampHms::classМетод: Validation::timestampHms() |
| 148 | Имя: timestamp.hmИспользование: timestamp.hm | Утверждает, что ввод выглядит как временная метка человека в 24- или 12-часовом формате без секунд. | Атрибут:TimestampHm::classМетод: Validation::timestampHm() |
| 149 | Имя: timestamp.msИспользование: timestamp.ms | Утверждает, что входные данные выглядят как временная метка человека, содержащая только минуты и секунды. | Атрибут:TimestampMs::classМетод: Validation::timestampMs() |
| 150 | Имя: calender.dayИспользование: calender.day | Утверждает, что входные данные выглядят как календарный день в кадре или в длинном формате («Пн» или «Понедельник»). | Атрибут:CalenderDay::classМетод: Validation::calenderDay() |
| 151 | Имя: calender.monthИспользование: calender.month | Утверждает, что входные данные выглядят как календарный месяц в дробном или длинном формате («январь» или «январь»). | Атрибут:CalenderMonth::classМетод: Validation::calenderMonth() |
| 152 | Имя: usernameИспользование: username | Утверждает, что входные данные являются действительным именем пользователя (от 4 до 32 символов, в любом случае состоят из букв, при необходимости из цифр, при необходимости из одного из следующих символов «-_.» (не последовательных), и всегда должны начинаться с буквы и заканчиваться с буквой или цифрой). | Атрибут:Username::classМетод: Validation::username() |
| 153 | Имя: passwordИспользование: password | Утверждает, что введенный пароль является действительным (минимум 8 символов, состоит как минимум из одной строчной и одной заглавной буквы, как минимум из одной цифры, как минимум из одного специального символа и, при необходимости, пробела). | Атрибут:Password::classМетод: Validation::password() |
| 154 | Имя: uuidИспользование: uuid | Утверждает, что ввод является допустимым UUID. Версия (v1/v2/v3/v4/v5) может быть указана для сужения шаблона. | Атрибут:Uuid::classМетод: Validation::uuid(string|int|null $version = null) |
| 155 | Имя: asciiИспользование: ascii | Утверждает, что входные данные представляют собой строку, содержащую только символы ASCII (строка, совместимая с ASCII). | Атрибут:Ascii::classМетод: Validation::ascii() |
| 156 | Название: slugИспользование: slug | Утверждает, что входные данные являются допустимым пулом. | Атрибут:Slug::classМетод: Validation::slug() |
| 157 | Название: metaИспользование: meta | Утверждает, что входные данные представляют собой строку, содержащую только метасимволы (специальные символы) (например, «@, #, $, ...»).. | Атрибут:Meta::classМетод: Validation::meta() |
| 158 | Имя: textИспользование: text | Утверждает, что входные данные представляют собой строку, содержащую буквы и знаки препинания любого языка. | Атрибут:Text::classМетод: Validation::text() |
| 159 | Название: wordsИспользование: words | Утверждает, что входные данные представляют собой строку, содержащую только слова и пробелы без каких-либо других символов. | Атрибут:Words::classМетод: Validation::words() |
| 160 | Название: spacelessИспользование: spaceless | Утверждает, что входные данные представляют собой строку, не содержащую пробелов. | Атрибут:Spaceless::classМетод: Validation::spaceless() |
| 161 | Имя: emojiИспользование: emoji | Утверждает, что входные данные содержат смайлик. | Атрибут:Emoji::classМетод: Validation::emoji() |
| 162 | Имя: romanИспользование: roman | Утверждает, что введенное значение является допустимым римским числом. | Атрибут:Roman::classМетод: Validation::roman() |
| 163 | Имя: phoneИспользование: phone | Утверждает, что введен действительный номер телефона (поддерживается: Северная Америка, Европа и большинство стран Азии и Ближнего Востока). | Атрибут:Phone::classМетод: Validation::phone() |
| 164 | Название: geolocationИспользование: geolocation | Утверждает, что входные данные являются допустимым географическим местоположением (комбинация координат широты и долготы). | Атрибут:Geolocation::classМетод: Validation::geolocation() |
| 165 | Название: versionИспользование: version | Утверждает, что входные данные являются допустимым номером семантической версии. | Атрибут:Version::classМетод: Validation::version() |
| 166 | Имя: amountИспользование: amount | Утверждает, что входные данные содержат только числа, необязательную десятичную точку (запятую или точку) и необязательный минус (используется, например, для денежных сумм). | Атрибут:Amount::classМетод: Validation::amount() |
| 167 | Имя: amount.dollarИспользование: amount.dollar | Утверждает, что входные данные представляют собой достоверно отформатированное количество долларов США, где десятичная точка и разделитель тысяч разделителей являются необязательными. | Атрибут:AmountDollar::classМетод: Validation::amountDollar() |
| 168 | Имя: amount.euroИспользование: amount.euro | Утверждает, что входные данные представляют собой достоверно отформатированную сумму евро, где десятичная точка и разделитель тысяч не являются обязательными. | Атрибут:AmountEuro::classМетод: Validation::amountEuro() |
| 169 | Имя: colorИспользование: color | Утверждает, что ввод является действительным цветом CSS (ключевое слово «свободное», Hex, Hex-Alpha, RGB, RGBA, RGB «Новый синтаксис», HSL, HSLA, HSL «новый синтаксис»). | Атрибут:Color::classМетод: Validation::color() |
| 170 | Имя: color.hexИспользование: color.hex | Утверждает, что ввод является действительным CSS Hex Color. | Атрибут:ColorHex::classМетод: Validation::colorHex() |
| 171 | Название: color.hexShortИспользование: color.hexShort | Утверждает, что вход является действительным CSS 3-Char-Hex. | Атрибут:ColorHexShort::classМетод: Validation::colorHexShort() |
| 172 | Имя: color.hexLongИспользование: color.hexLong | Утверждает, что вход является действительным цветом CSS 6-char-hex. | Атрибут:ColorHexLong::classМетод: Validation::colorHexLong() |
| 173 | Имя: color.hexAlphaИспользование: color.hexAlpha | Утверждает, что ввод является действительным цветом CSS Hex-Alpha (4 или 8 chars). | Атрибут:ColorHexAlpha::classМетод: Validation::colorHexAlpha() |
| 174 | Имя: color.rgbИспользование: color.rgb | Утверждает, что вход является действительным цветом CSS RGB. | Атрибут:ColorRgb::classМетод: Validation::colorRgb() |
| 175 | Название: color.rgbaИспользование: color.rgba | Утверждает, что ввод является действительным цветом CSS RGBA. | Атрибут:ColorRgba::classМетод: Validation::colorRgba() |
| 176 | Название: color.rgb.newИспользование: color.rgb.new | Утверждает, что вход является действительным цветом RGB CSS4. | Атрибут:ColorRgbNew::classМетод: Validation::colorRgbNew() |
| 177 | Имя: color.hslИспользование: color.hsl | Утверждает, что вход является действительным CSS HSL Color. | Атрибут:ColorHsl::classМетод: Validation::colorHsl() |
| 178 | Имя: color.hslaИспользование: color.hsla | Утверждает, что вход является действительным цветом CSS HSLA. | Атрибут:ColorHsla::classМетод: Validation::colorHsla() |
| 179 | Имя: color.hsl.newИспользование: color.hsl.new | Утверждает, что вход является действительным цветом HSL CSS4. | Атрибут:ColorHslNew::classМетод: Validation::colorHslNew() |
| 180 | Имя: color.keywordИспользование: color.keyword | Утверждает, что вход является действительным цветом ключевого слова CSS (строгий, как в спецификации CSS). | Атрибут:ColorKeyword::classМетод: Validation::colorKeyword() |
| 181 | Имя: ssnИспользование: ssn | Утверждает, что ввод является действительным SSN (номер социального страхования США). | Атрибут:Ssn::classМетод: Validation::ssn() |
| 182 | Имя: sinИспользование: sin | Утверждает, что вклад является действительным грехом (номер социального страхования CA). | Атрибут:Sin::classМетод: Validation::sin() |
| 183 | Имя: ninoИспользование: nino | Утверждает, что входные данные являются действительным Nino (Nino (UK National Number). | Атрибут:Nino::classМетод: Validation::nino() |
| 184 | Имя: vinИспользование: vin | Утверждает, что вход является действительным VIN (идентификационный номер транспортного средства). | Атрибут:Vin::classМетод: Validation::vin() |
| 185 | Имя: issnИспользование: issn | Утверждает, что входные данные являются действительным ISSN (международный стандартный серийный номер). | Атрибут:Issn::classМетод: Validation::issn() |
| 186 | Имя: isinИспользование: isin | Утверждает, что входные данные являются действительным ISIN (международный идентификационный номер ценных бумаг). | Атрибут:Isin::classМетод: Validation::isin() |
| 187 | Имя: isbnИспользование: isbn | Утверждает, что ввод является действительным ISBN (международный стандартный номер книги). Тип (10/13) может быть указан для сужения шаблона. | Атрибут:Isbn::classМетод: Validation::isbn(string|int|null $type = null) |
| 188 | Имя: imeiИспользование: imei | Утверждает, что входные данные представляют собой действительный IMEI (международный номер идентификации оборудования мобильной станции). | Атрибут:Imei::classМетод: Validation::imei() |
| 189 | Имя: imei.svИспользование: imei.sv | Утверждает, что ввод является действительным IMEI-SV (международная идентификация оборудования для мобильной станции и версию программного обеспечения). | Атрибут:ImeiSv::classМетод: Validation::imeiSv() |
| 190 | Имя: meidИспользование: meid | Утверждает, что вход является действительным MEID (идентификатор мобильного оборудования). | Атрибут:Meid::classМетод: Validation::meid() |
| 191 | Имя: esnИспользование: esn | Утверждает, что вход является действительным ESN (электронный серийный номер). | Атрибут:Esn::classМетод: Validation::esn() |
| 192 | Имя: currencyИспользование: currency | Утверждает, что ввод является действительным кодом валюты (по умолчанию: «ISO 4217 Alpha»; NUMERIC: «ISO 4217 NUMERIC»). | Атрибут:Currency::classМетод: Validation::currency(bool $numeric = false) |
| 193 | Имя: currency.nameИспользование: currency.name | Утверждает, что ввод является действительным названием валюты (как в ISO 4217). | Атрибут:CurrencyName::classМетод: Validation::currencyName() |
| 194 | Имя: creditcardИспользование: creditcard | Утверждает, что входные данные представляют собой действительный номер кредитной карты, сбалансированные пространства и/или тире. | Атрибут:Creditcard::classМетод: Validation::creditcard() |
| 195 | Имя: creditcard.visaИспользование: creditcard.visa | Утверждает, что входные данные представляют собой действительный номер кредитной карты визы, сбалансированные пространства и/или тире. | Атрибут:CreditcardVisa::classМетод: Validation::creditcardVisa() |
| 196 | Имя: creditcard.mastercardИспользование: creditcard.mastercard | Утверждает, что входные данные представляют собой действительный номер кредитной карты MasterCard, сбалансированные пространства и/или тире. | Атрибут:CreditcardMastercard::classМетод: Validation::creditcardMastercard() |
| 197 | Имя: creditcard.discoverИспользование: creditcard.discover | Утверждает, что входные данные представляют собой действительный номер кредитной карты, сбалансированные пространства и/или тире. | Атрибут:CreditcardDiscover::classМетод: Validation::creditcardDiscover() |
| 198 | Название: creditcard.americanExpressИспользование: creditcard.americanExpress | Утверждает, что входные данные представляют собой действительный номер кредитной карты American Express, сбалансированные пространства и/или тире. | Атрибут:CreditcardAmericanExpress::classМетод: Validation::creditcardAmericanExpress() |
| 199 | Имя: creditcard.dinersClubИспользование: creditcard.dinersClub | Утверждает, что входные данные представляют собой действительный номер кредитной карты Club Diners, сбалансированные пространства и/или тире. | Атрибут:CreditcardDinersClub::classМетод: Validation::creditcardDinersClub() |
| 200 | Имя: creditcard.jcbИспользование: creditcard.jcb | Утверждает, что входные данные представляют собой действительный номер кредитной карты JCB, сбалансированные пространства и/или тире. | Атрибут:CreditcardJcb::classМетод: Validation::creditcardJcb() |
| 201 | Имя: creditcard.maestroИспользование: creditcard.maestro | Утверждает, что входные данные представляют собой действительный номер кредитной карты Maestro, сбалансированные пространства и/или тире. | Атрибут:CreditcardMaestro::classМетод: Validation::creditcardMaestro() |
| 202 | Имя: creditcard.chinaUnionPayИспользование: creditcard.chinaUnionPay | Утверждает, что входные данные представляют собой действительный номер кредитной карты China Unionpay, сбалансированные пространства и/или тире. | Атрибут:CreditcardChinaUnionPay::classМетод: Validation::creditcardChinaUnionPay() |
| 203 | Имя: creditcard.instaPaymentИспользование: creditcard.instaPayment | Утверждает, что входные данные представляют собой действительный номер кредитной карты, сбалансированные пространства и/или тире. | Атрибут:CreditcardInstaPayment::classМетод: Validation::creditcardInstaPayment() |
| 204 | Имя: creditcard.laserИспользование: creditcard.laser | Утверждает, что входные данные представляют собой действительный номер кредитной карты лазера, сбалансированные пространства и/или тире. | Атрибут:CreditcardLaser::classМетод: Validation::creditcardLaser() |
| 205 | Имя: creditcard.uatpИспользование: creditcard.uatp | Утверждает, что входные данные представляют собой действительный номер кредитной карты UATP, сбалансированные пространства и/или тире. | Атрибут:CreditcardUatp::classМетод: Validation::creditcardUatp() |
| 206 | Имя: creditcard.mirИспользование: creditcard.mir | Утверждает, что вход является действительным номером платежной системной карты MIR, сбалансированными пространствами и/или типами разрешены. | Атрибут:CreditcardMir::classМетод: Validation::creditcardMir() |
| 207 | Имя: cvvИспользование: cvv | Утверждает, что ввод является действительным CVV (код безопасности карты). | Атрибут:Cvv::classМетод: Validation::cvv() |
| 208 | Имя: bicИспользование: bic | Утверждает, что ввод является действительным BIC (код идентификатора банка). | Атрибут:Bic::classМетод: Validation::bic() |
| 209 | Имя: ibanИспользование: iban:IQ | Утверждает, что входные данные являются действительным IBAN (номер международного банковского счета). Код страны «ISO 3166-1 Alpha-2» может быть указан для сужения шаблона. | Атрибут:Iban::classМетод: Validation::iban(?string $country = null) |
| 210 | Имя: luhnИспользование: luhn | Утверждает, что вход проходит проверку алгоритма Luhn. Это правило в основном используется в сочетании с другими правилами, такими как номера кредитных карт и идентификаторы для дальнейшей проверки достоверности субъекта. | Атрибут:Luhn::classМетод: Validation::luhn() |
| 211 | Имя: php.keywordИспользование: php.keyword | Утверждает, что ввод является ключевым словом языка PHP. | Атрибут:PhpKeyword::classМетод: Validation::phpKeyword() |
| 212 | Имя: php.reservedИспользование: php.reserved | Утверждает, что ввод является зарезервированным словом PHP. | Атрибут:PhpReserved::classМетод: Validation::phpReserved() |
| 213 | Имя: php.reserved.extraИспользование: php.reserved.extra | Утверждает, что ввод является зарезервированным словом PHP, включая мягкие зарезервированные слова. | Атрибут:PhpReservedExtra::classМетод: Validation::phpReservedExtra() |
| 214 | Название: regexИспользование: regex | Утверждает, что ввод является действительным регулярным выражением. | Атрибут:Regex::classМетод: Validation::regex() |
| 215 | Имя: boolИспользование: см. boolean | Псевдоним, см boolean для полного описания. | Атрибут:BoolConstraint::classМетод: Validation::bool() |
| 216 | Имя: intИспользование: см integer | Псевдоним, обратитесь к integer для полного описания. | Атрибут:IntConstraint::classМетод: Validation::int() |
| 217 | Имя: longИспользование: см integer | Псевдоним, обратитесь к integer для полного описания. | Атрибут:Long::classМетод: Validation::long() |
| 218 | Имя: doubleИспользование: см float | Псевдоним, обратитесь к float для полного описания. | Атрибут:Double::classМетод: Validation::double() |
| 219 | Имя: realИспользование: см float | Псевдоним, обратитесь к float для полного описания. | Атрибут:Real::classМетод: Validation::real() |
| 220 | Название: strИспользование: см string | Псевдоним, обратитесь к string для полного описания. | Атрибут:Str::classМетод: Validation::str() |
| 221 | Имя: arrИспользование: см array | Псевдоним, обратитесь к array для полного описания. | Атрибут:Arr::classМетод: Validation::arr() |
| 222 | Имя: objИспользование: см. object | Псевдоним, обратитесь к object для полного описания. | Атрибут:Obj::classМетод: Validation::obj() |
| 223 | Имя: streamИспользование: см. resource | Псевдоним, обратитесь к resource для полного описания. | Атрибут:Stream::classМетод: Validation::stream() |
| 224 | Имя: assertИспользование: посмотрите, if | Псевдоним, см. if для полного описания. | Атрибут:Assert::classМетод: Validation::assert(mixed $actual, mixed $expected = true, string $operator = '==') |
| 225 | Имя: assert.equalsИспользование: посмотрите, if.eq | Псевдоним, обратитесь к if.eq для полного описания. | Атрибут:AssertEquals::classМетод: Validation::assertEquals(mixed $actual, mixed $expected) |
| 226 | Имя: assert.notEqualsИспользование: посмотрите if.neq | Псевдоним, обратитесь к if.neq для полного описания. | Атрибут:AssertNotEquals::classМетод: Validation::assertNotEquals(mixed $actual, mixed $expected) |
| 227 | Имя: assert.greaterThanИспользование: посмотрите на if.gt | Псевдоним, обратитесь к if.gt для полного описания. | Атрибут:AssertGreaterThan::classМетод: Validation::assertGreaterThan(mixed $actual, mixed $expected) |
| 228 | Название: assert.greaterThanOrEqualsИспользование: посмотрите на if.gte | Псевдоним, обратитесь к if.gte для полного описания. | Атрибут:AssertGreaterThanOrEquals::classМетод: Validation::assertGreaterThanOrEquals(mixed $actual, mixed $expected) |
| 229 | Имя: assert.lessThanИспользование: посмотрите на if.lt | Псевдоним, обратитесь к if.lt для полного описания. | Атрибут:AssertLessThan::classМетод: Validation::assertLessThan(mixed $actual, mixed $expected) |
| 230 | Название: assert.lessThanOrEqualsИспользование: посмотрите на if.lte | Псевдоним, обратитесь к if.lte для полного описания. | Атрибут:AssertLessThanOrEquals::classМетод: Validation::assertLessThanOrEquals(mixed $actual, mixed $expected) |
| 231 | Имя: blankИспользование: Смотрите empty | Псевдоним, обратитесь к empty для полного описания. | Атрибут:Blank::classМетод: Validation::blank() |
| 232 | Имя: isИспользование: См equals | Псевдоним, обратитесь к equals для полного описания. | Атрибут:Is::classМетод: Validation::is(mixed $value) |
| 233 | Имя: sameИспользование: См equals | Псевдоним, обратитесь к equals для полного описания. | Атрибут:Same::classМетод: Validation::same(mixed $value) |
| 234 | Имя: patternИспользование: см matches | Псевдоним, обратитесь к matches для полного описания. | Атрибут:Pattern::classМетод: Validation::pattern(string $pattern) |
| 235 | Имя: choiceИспользование: см. in | Псевдоним, см. in полном описании. | Атрибут:Choice::classМетод: Validation::choice(string|int|float|bool|null ...$values) |
| 236 | Имя: sizeИспользование: см count | Псевдоним, обратитесь к count для полного описания. | Атрибут:Size::classМетод: Validation::size(int $size) |
| 237 | Имя: lengthИспользование: см count | Псевдоним, обратитесь к count для полного описания. | Атрибут:Length::classМетод: Validation::length(int $count) |
| 238 | Имя: rangeИспользование: см between | Псевдоним, см. between полным описанием. | Атрибут:Range::classМетод: Validation::range(int|float $min, int|float $max) |
| 239 | Имя: minmaxИспользование: см between | Псевдоним, см. between полным описанием. | Атрибут:Minmax::classМетод: Validation::minmax(int|float $min, int|float $max) |
| 240 | Имя: filledИспользование: см. required | Псевдоним, обратитесь к required для полного описания. | Атрибут:Filled::classМетод: Validation::filled() |
| 241 | Имя: presentИспользование: см. required | Псевдоним, обратитесь к required для полного описания. | Атрибут:Present::classМетод: Validation::present() |
| 242 | Имя: optionalИспользование: См. allowed | Псевдоним, обратитесь к allowed полного описания. | Атрибут:Optional::classМетод: Validation::optional() |
| 243 | Имя: dateИспользование: см. datetime | Псевдоним, см. datetime для полного описания. | Атрибут:Date::classМетод: Validation::date() |
| 244 | Имя: date.equalsИспользование: см. datetime.eq | Псевдоним, см. datetime.eq для полного описания. | Атрибут:DateEquals::classМетод: Validation::dateEquals(string $datetime) |
| 245 | Имя: date.beforeИспользование: см. datetime.lt | Псевдоним, см. datetime.lt для полного описания. | Атрибут:DateBefore::classМетод: Validation::dateBefore(string $datetime) |
| 246 | Имя: date.beforeOrEqualsИспользование: см. datetime.lte | Псевдоним, см. datetime.lte для полного описания. | Атрибут:DateBeforeOrEquals::classМетод: Validation::dateBeforeOrEquals(string $datetime) |
| 247 | Имя: date.afterИспользование: см. datetime.gt | Псевдоним, см. datetime.gt для полного описания. | Атрибут:DateAfter::classМетод: Validation::dateAfter(string $datetime) |
| 248 | Название: date.afterOrEqualsИспользование: см. datetime.gte | Псевдоним, см. datetime.gte для полного описания. | Атрибут:DateAfterOrEquals::classМетод: Validation::dateAfterOrEquals(string $datetime) |
| 249 | Имя: date.formatИспользование: см. datetime.format | Псевдоним, см. datetime.format для полного описания. | Атрибут:DateFormat::classМетод: Validation::dateFormat(string $format) |
| 250 | Имя: cakedayИспользование: см. datetime.birthday | Псевдоним, см. datetime.birthday для полного описания. | Атрибут:Cakeday::classМетод: Validation::cakeday() |
| Макрос | В валидационном выражении |
|---|---|
[nullable] | null^~empty |
[alnumDash] | matches:"/[a-zA-Z0-9-_]+/" |
[twitterHandle] | matches:'"/^[a-zA-Z_]{1}[a-zA-Z0-9_]{0,14}$/"' |
[gmail] | email&string.contains:"@gmail." |
[eduMail] | email&string.endsWith:".edu" |
К настоящему времени может показаться, что mighty делает слишком много, и проблемы с производительностью начинают возникать. Ну, нет необходимости беспокоиться об этом. mighty действительно быстрый и оптимизирован, чтобы обеспечить наилучшую производительность. Вот некоторые тесты производительности валидатора:
Производительность mighty Validator и Laravel Validator в приложении Laravel. Тест проводился с использованием массива из 50000 элементов, половина из них - целые числа, а другая половина - числовые строки. Каждый валидатор был протестирован в 10 раз (последовательно), и средний результат этих 10 был собран:
$ data = array_merge ( range ( 1 , 25000 ), array_map ( ' strval ' , range ( ' 25001 ' , ' 50000 ' )));
// mighty Validator with XDebug disabled
[ // required&integer
' preparationTime ' => ' 1.32ms ' , // the time required to build the array
' validationTime ' => ' 1107.29ms ' , // the time required to validate the array
' totalTime ' => ' 1108.61ms ' , // the time required for the whole process
]
// mighty Validator with XDebug enabled
[ // required&integer
' preparationTime ' => ' 9.09ms ' ,
' validationTime ' => ' 6085.04ms ' ,
' totalTime ' => ' 6094.13ms ' ,
]
// Laravel Validator with XDebug disabled
[ // required|integer
' preparationTime ' => ' 1.33ms ' ,
' validationTime ' => ' 13882.72ms ' ,
' totalTime ' => ' 13884.05ms ' ,
]
// Laravel Validator with XDebug enabled
[ // required|integer
' preparationTime ' => ' 9.33ms ' ,
' validationTime ' => ' 24010.60ms ' ,
' totalTime ' => ' 24019.93ms ' ,
]Таким образом, mighty примерно в 12,5 раза быстрее, чем валидатор Laravel с отключенным XDebug и примерно в 4 раза быстрее с включенным XDebug.
Конфликт выполняется с использованием phpbench. Вот краткий обзор:
PHPBench (1.2.6) running benchmarks...
with configuration file: mighty /phpbench.json.dist
with PHP version 8.1.9, xdebug , opcache
MAKS mighty BenchmarksConstraintBench
benchAValidValidatableObject............I4 ✔ Mo305.595074ops/s (±0.75%)
benchAnInvalidValidatableObject.........I4 ✔ Mo326.708522ops/s (±1.02%)
MAKS mighty BenchmarksValidatorBench
benchSingleValidationString.............I4 ✔ Mo0.02212ms (±1.59%)
benchSingleValidationObject.............I4 ✔ Mo0.126929ms (±1.63%)
benchBulkValidationObject...............I4 ✔ Mo9.345847ms (±0.62%)
benchBulkValidationString...............I4 ✔ Mo6.734188ms (±0.40%)
Subjects: 6, Assertions: 6, Failures: 0, Errors: 0
Факт: самый последний эталонный результат также можно найти в трубопроводе CI, который будет обновляться с каждым push/pr в Upsteam.
MAKS mighty Rule::setMessageTranslator() . Этот метод является удобным способом установить глобальный переводчик сообщений, он требует закрытия, которое получает необработанное сообщение (с заполнителями) в качестве аргумента и должен вернуть переведенную версию этого сообщения. mighty -это проект с открытым исходным кодом, лицензированный по лицензии MIT .
Авторские права (C) 2022 Marwan Al-Soltany. Все права защищены.