مكتبة التحقق الأخيرة التي ستحتاج إليها على الإطلاق!
تثبيت
عن mighty
بداية سريعة
مفيل
أمثلة
قيود
التحقق من الصحة
التوثيق
مواصفة
سجل التغيير
إذا أعجبك هذا المشروع وترغب في دعم تطويره، فسيكون إعطاؤه موضع تقدير!
العرض التوضيحي العظيم" style="max-width: 100%;">
composer require marwanalsoltany/ mighty
يعد التحقق من الصحة مهمة شائعة في أي تطبيق ويب. يجب دائمًا التحقق من صحة البيانات التي يتم تمريرها إلى التطبيق عبر النماذج - أو أي نوع من المدخلات في هذا الشأن - مقابل مجموعة من القواعد. يستطيع mighty التعامل معه بطريقة سهلة ومعبرة.
mighty هي مكتبة تحقق سريعة وقوية وسهلة الاستخدام، وهي ممتعة للعمل معها، كما أنها تجعل التحقق من صحة أي بيانات أمرًا سهلاً. بفضل قوة لغة التحقق من الصحة التعبيرية (mVEL) mighty ، فهي ليست مثل أي شيء رأيته من قبل. بفضل نهج التحقق من الصحة وما يزيد عن 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 التحقق من صحة البيانات المقدمة. تعتمد هذه السلاسل على مواصفات لغة تعبير التحقق من الصحة (mVEL) mighty . إن mVEL بسيط للغاية ويمكن قراءته بواسطة الإنسان ويسهل التعامل معه. وهو عبارة عن مزيج من المفاهيم و/أو المواصفات الراسخة مثل الجبر البوليني، ومشغلي Bitwise، وJSON، وCSV.
لذلك، يمكن تعريف تعبير التحقق من الصحة على أنه سلسلة تحتوي على بعض القواعد المفصولة بواسطة عوامل Bitwise والتي ستبني تعبيرًا سيؤدي عند تقييمه باستخدام منطق الجبر البوليني ، إلى النتيجة النهائية للتحقق من الصحة. يمكن أن تحتوي القواعد على وسائط، ويمكن الإشارة إلى أنواع هذه الوسائط باستخدام نفس قواعد أنواع JSON . يمكن أن تحتوي القاعدة أيضًا على وسائط متعددة ويتم فصل الوسائط بفواصل ( CSV ).
على سبيل المثال، يعتبر required&string&between:2,255|null
تعبيرًا صالحًا للتحقق من الصحة، ويمكن فهم هذا التعبير على النحو التالي:
required
يؤكد أن الإدخال موجود.string
تؤكد أن الإدخال عبارة عن سلسلة.between:2,255
التأكد من أن الإدخال عبارة عن سلسلة يتراوح طولها بين 2 و255.null
يؤكد أن الإدخال فارغ. التعبير required&string&between:2,255|null
يعني أن الإدخال يجب أن يكون موجودًا؛ ومن نوع السلسلة؛ ويتراوح طولها بين 2 و255؛ أو فارغة. لذا فهي سلسلة فارغة، وعندما لا تكون فارغة، يجب أن يتراوح طولها بين 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
، إلخ ...
على عكس تطبيقات التحقق من الصحة الأخرى، فإن مفهوم الجبر البوليني باستخدام عوامل Bitwise ، يعطي إمكانية إنشاء عمليات تحقق معقدة تكون قابلة للقراءة ومدمجة للغاية مع الحفاظ على القواعد عند الحد الأدنى من العدد، وإعادة استخدام المنطق الحالي بطريقة عكسية أو مركبة، وأخيرًا الحفاظ على قاعدة التعليمات البرمجية جافة قدر الإمكان. ويمكن تلخيص الفوائد في النقاط التالية:
~
) للقيام بعكس ما تفعله عادةً.&
) أو OR ing (باستخدام |
) أو XOR ing (باستخدام ^
) أو قاعدتين بسيطتين أو أكثر.(
) و 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
: يتم استخدام هذه السمة للتحقق من صحة أي بيانات باستخدام قاعدة تحقق واحدة. وهي أيضًا الفئة الأساسية لجميع السمات الموجودة في مجموعة Rule Constraint Attributes.Callback
: يتم استخدام هذه السمة للتحقق من صحة أي بيانات باستخدام وظيفة رد الاتصال.Valid
: يتم استخدام هذه السمة للتحقق من صحة كائن قابل للتحقق.Shape
: يتم استخدام هذه السمة للتحقق من صحة شكل مصفوفة أو كائن. لاحظ أن هذه هي السمة الوحيدة التي تتحقق من صحة مجموعة من القيم (البيانات المنظمة) بدلاً من قيمة واحدة.Compound
: يتم استخدام هذه السمة لدمج مجموعة من القيود لإنشاء تعبير التحقق من الصحة. يمكن دمج القيود باستخدام أي عامل، ويمكن أيضًا أن يكون لها سلوك. إنه بمثابة وسيلة موجهة للكائنات لبناء تعبير التحقق من الصحة. ملاحظة: لاحظ أن القيود المسموح باستخدامها مع Shape::class
و Compound::class
يجب أن تكون مثيلات فعلية لـ Constraint::class
أو Rule::class
أو Compound::class
. لا يُسمح باستخدام Callback::class
أو Valid::class
أو Shape::class
لمجموعة سمات القيد الخاصة . إذا كانت لديك حاجة لهذه الميزة، فافتح مشكلة وسنناقش تنفيذها
توجد سمات قيد القاعدة ضمن مساحة الاسم MAKS mighty ValidationConstraintRule
.
تحتوي هذه المجموعة على سمات تستند إلى قاعدة تحقق واحدة. وهو يتألف من معظم السمات التي يوفرها mighty . ارجع إلى قسم عمليات التحقق من الصحة للحصول على القائمة الكاملة.
يحتوي mighty على قائمة ضخمة من القيود المضمنة، ومن النادر حقًا أن تحتاج إلى أي شيء آخر غير ما يوفره mighty . ومع ذلك، في بعض الأحيان تنشأ الحاجة إلى قيد مخصص، وهذه هي الطريقة التي يمكنك من خلالها تحقيق ذلك:
<?php
declare (strict_types= 1 );
namespace App Validation Constraint ;
use Attribute ;
use MAKS mighty Rule ;
use MAKS mighty Result ;
use MAKS mighty Validation Strategy ;
use MAKS mighty Validation Constraint ;
use MAKS mighty Validation Constraint ValidatesOne ;
// use the ValidatesMany interface if your Constraint returns a collection of Result objects
use MAKS mighty Validation Constraint ValidatesMany ;
#[Attribute(
Attribute:: TARGET_PROPERTY |
Attribute:: TARGET_METHOD
)]
class MyCustomConstraint extends Constraint implements ValidatesOne
{
public function __construct (
? string $ message = null ,
Strategy $ strategy = Strategy::FailFast,
) {
parent :: __construct (
validation: ' app.myCustomConstraint ' ,
messages: [ ' app.myCustomConstraint ' => $ message ],
strategy: $ strategy
);
}
public function validate ( mixed $ value = null ): Result
{
// it is really up to you, how you handle this
// you will just work with a normal mighty Validator
// here we're just preparing the data to pass to the Validator
$ name = '' ;
$ data = [ $ name => $ value ];
$ validations = [ $ name => $ this -> validation ];
$ messages = [ $ name => [ $ this -> validation => $ this -> messages [ $ this -> validation ] ?? null ]];
$ labels = [ $ name => static ::class];
// you can reuse the built-in rules or
// add you own Rule that handles your custom logic
$ result = $ this
-> getValidator ()
-> addRule (
// see MAKS mighty Rule for more info
( new Rule ())
-> setName ( ' app.myCustomConstraint ' )
-> setCallback ( static fn ( $ input ) => $ input /* here comes your logic */ )
-> setParameters ([ ' @input ' ]) // rule callback dependencies
-> setMessage ( ' ${@label} must follow my custom constraint validation. ' ) // this is the default message
)
-> setData ( $ data )
-> setValidations ( $ validations )
-> setMessages ( $ messages )
-> setLabels ( $ labels )
-> validate ();
return $ result [ $ name ]; // if you implement ValidatesMany, you will just return $result
}
}
ملاحظة: تعتبر القيود المخصصة جزءًا من مجموعة سمات القيد الخاصة (أي لا يُسمح باستخدامها مع/داخل Shape::class
Compound::class
)
يسرد الجدول التالي كافة القواعد المتاحة بما في ذلك مرادفات السمات والأسلوب الخاصة بها:
Validation::class
Constraint::class
والقيد Constraint/Rule/*
لا. | قاعدة | وصف | السمة / الطريقة |
---|---|---|---|
001 | الاسم: null الاستخدام : null | التأكد من أن الإدخال فارغ. | يصف: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 | التأكد من أن الإدخال عبارة عن قيمة يمكن تحليلها كقيمة منطقية (TRUE: true، "true"، "1"، "on"، "yes"؛ FALSE: false، "false"، "0"، "off" ، "لا"، ""، خالية). | يصف: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 | التأكد من أن الإدخال هو عنوان بريد إلكتروني (مسموح بـ Unicode). | يصف:EmailWithUnicode::class طريقة: Validation::emailWithUnicode() |
045 | الاسم: domain الاستخدام: domain | التأكد من أن الإدخال عبارة عن مجال. | يصف:Domain::class طريقة: Validation::domain() |
046 | الاسم: domain.isActive الاستخدام: domain.isActive | التأكد من أن الإدخال هو مجال نشط. يعمل مع المجالات ورسائل البريد الإلكتروني. | يصف:DomainIsActive::class طريقة: Validation::domainIsActive() |
047 | الاسم: file الاستخدام : file | التأكد من أن الإدخال عبارة عن ملف (يمكن أن يكون ملفًا أو رابطًا أو دليلاً). | يصف:File::class طريقة: Validation::file() |
048 | الاسم: file.isFile الاستخدام: file.isFile | التأكد من أن الإدخال عبارة عن ملف. | يصف:FileIsFile::class طريقة: Validation::fileIsFile() |
049 | الاسم: file.isLink الاستخدام: file.isLink | التأكد من أن الإدخال عبارة عن رابط. | يصف:FileIsLink::class طريقة: Validation::fileIsLink() |
050 | الاسم: file.isDirectory الاستخدام: file.isDirectory | التأكد من أن الإدخال هو دليل. | يصف:FileIsDirectory::class طريقة: Validation::fileIsDirectory() |
051 | الاسم: file.isExecutable الاستخدام: file.isExecutable | التأكد من أن الإدخال عبارة عن ملف وقابل للتنفيذ. | يصف:FileIsExecutable::class طريقة: Validation::fileIsExecutable() |
052 | الاسم: file.isWritable الاستخدام: file.isWritable | التأكد من أن الإدخال عبارة عن ملف وقابل للكتابة. | يصف:FileIsWritable::class طريقة: Validation::fileIsWritable() |
053 | الاسم: file.isReadable الاستخدام: file.isReadable | التأكد من أن الإدخال عبارة عن ملف ويمكن قراءته. | يصف:FileIsReadable::class طريقة: Validation::fileIsReadable() |
054 | الاسم: file.isUploaded الاستخدام: file.isUploaded | التأكد من أن الإدخال عبارة عن ملف تم تحميله عبر HTTP POST. | يصف:FileIsUploaded::class طريقة: Validation::fileIsUploaded() |
055 | الاسم: file.size الاستخدام: file.size:1024 | التأكد من أن الإدخال عبارة عن ملف وحجمه يساوي الحجم المحدد بالبايت. | يصف:FileSize::class طريقة: Validation::fileSize(int $sizeInBytes) |
056 | الاسم: file.size.lte الاستخدام: file.size.lte:1024 | التأكد من أن الإدخال عبارة عن ملف وحجمه أقل من أو يساوي الحجم المحدد بالبايت. | يصف:FileSizeLte::class طريقة: Validation::fileSizeLte(int $sizeInBytes) |
057 | الاسم: file.size.gte الاستخدام: file.size.gte:1024 | التأكد من أن الإدخال عبارة عن ملف وحجمه أكبر من أو يساوي الحجم المحدد بالبايت. | يصف:FileSizeGte::class طريقة: Validation::fileSizeGte(int $sizeInBytes) |
058 | الاسم: file.dirname الاستخدام: file.dirname:/path/to/dir | التأكد من أن الإدخال عبارة عن ملف وأن اسم dir الخاص به يساوي اسم dirname المحدد. | يصف: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 | التأكد من أن الإدخال محظور (فارغ أو غير موجود). | يصف:Forbidden::class طريقة: Validation::forbidden() |
085 | الاسم: accepted الاستخدام: accepted | التأكد من قبول الإدخال (يساوي: "on" أو "yes" أو "yeah" أو "yep" أو "yo" أو "ok" أو "okay" أو "aye" أو 1 أو "1" أو true أو " true") لاحظ أنه يتم التعامل مع السلاسل بطريقة غير حساسة لحالة الأحرف. | يصف:Accepted::class طريقة: Validation::accepted() |
086 | الإسم: declined الاستخدام: declined | التأكد من رفض الإدخال (يساوي: "off" أو "no" أو "not" أو "nope" أو "neh" أو "nay" أو 0 أو "0" أو false أو "false") لاحظ أنه يتم التعامل مع السلاسل بطريقة غير حساسة لحالة الأحرف. | يصف:Declined::class طريقة: Validation::declined() |
087 | الاسم: bit الاستخدام: bit | التأكد من أن الإدخال هو بت (يساوي: 1 أو "1"، صحيح؛ 0 أو "0"، خطأ). | يصف:Bit::class طريقة: Validation::bit() |
088 | الاسم: bit.isOn الاستخدام: bit.isOn | التأكد من أن الإدخال هو بت قيد التشغيل (يساوي: صحيح، 1 أو "1"). | يصف:BitIsOn::class طريقة: Validation::bitIsOn() |
089 | الاسم: bit.isOff الاستخدام: bit.isOff | التأكد من أن الإدخال هو بت متوقف (يساوي: خطأ، 0 أو "0"). | يصف:BitIsOff::class طريقة: Validation::bitIsOff() |
090 | الاسم: equals الاستخدام: equals:value | التأكد من أن الإدخال يساوي القيمة المحددة. يعمل مع الأنواع العددية والصفرية. عامل المقارنة هو "==". | يصف: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,... | التأكد من أن الإدخال موجود في القيم المحددة. يعمل مع الأنواع العددية والصفرية. | يصف: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 alpha-2]، غير حساس لحالة الأحرف، ويتم تحديد الإدخال بشكل أساسي قبل التحقق (الشرطات إلى الشرطات السفلية، بدون نقاط أو محارف)؛ صارم: [ISO 639-1] أو [ISO 639-1]_[ISO 3166-1 alpha-2]، حساس لحالة الأحرف دون تحديد العنوان الأساسي. | يصف:Locale::class طريقة: Validation::locale(bool $strict = false) |
128 | الإسم: language الاستعمال: language | التأكد من أن الإدخال هو رمز لغة صالح (الافتراضي: "ISO 639-1"؛ الطويل: "ISO 639-2/T"). | يصف:Language::class طريقة: Validation::language(bool $long = false) |
129 | الاسم: country الاستخدام: country | التأكد من أن الإدخال هو رمز بلد صالح (الافتراضي: "ISO 3166-1 alpha-2"؛ الطويل: "ISO 3166-1 alpha-3"). | يصف:Country::class طريقة: Validation::country(bool $long = false) |
130 | الاسم: timezone الاستخدام: timezone | التأكد من أن الإدخال هو معرف منطقة زمنية صالح (الافتراضي: حساس لحالة الأحرف؛ صارم: حساس لحالة الأحرف). | يصف:Timezone::class طريقة: Validation::timezone(bool $strict = false) |
131 | الاسم: datetime الاستخدام: datetime | التأكد من أن الإدخال عبارة عن سلسلة/كائن تاريخ/وقت صالح. | يصف:Datetime::class طريقة: Validation::datetime() |
132 | الاسم: datetime.eq الاستخدام: datetime.eq:"2015-01-01" | التأكد من أن الإدخال يساوي سلسلة التاريخ والوقت المحددة. | يصف:DatetimeEq::class طريقة: Validation::datetimeEq(string $datetime) |
133 | الاسم: datetime.lt الاستخدام: datetime.lt:tomorrow | التأكد من أن الإدخال عبارة عن سلسلة/كائن تاريخ/وقت أقل من (قبل) سلسلة التاريخ والوقت المحددة. | يصف:DatetimeLt::class طريقة: Validation::datetimeLt(string $datetime) |
134 | الاسم: datetime.lte الاستخدام: datetime.lte:tomorrow | التأكد من أن الإدخال عبارة عن سلسلة/كائن تاريخ/وقت أقل من (قبل) أو يساوي سلسلة التاريخ والوقت المحددة. | يصف:DatetimeLte::class طريقة: Validation::datetimeLte(string $datetime) |
135 | الاسم: datetime.gt الاستخدام: datetime.gt:today | التأكد من أن الإدخال عبارة عن سلسلة/كائن تاريخ/وقت أكبر من (بعد) سلسلة التاريخ والوقت المحددة. | يصف:DatetimeGt::class طريقة: Validation::datetimeGt(string $datetime) |
136 | الاسم: datetime.gte الاستخدام: datetime.gte:today | التأكد من أن الإدخال عبارة عن سلسلة/كائن تاريخ/وقت أكبر من (بعد) أو يساوي سلسلة التاريخ والوقت المحددة. | يصف:DatetimeGte::class طريقة: Validation::datetimeGte(string $datetime) |
137 | الاسم: datetime.birthday الاستخدام: datetime.birthday | التأكد من أن الإدخال عبارة عن سلسلة/كائن تاريخ وتاريخ ميلاده اليوم. من المفضل أن يكون الإدخال بتنسيق "YYYY-MM-DD". | يصف:DatetimeBirthday::class طريقة: Validation::datetimeBirthday() |
138 | الاسم: datetime.format الاستخدام: datetime.format:"Ymd H:i:s" | التأكد من أن الإدخال هو تاريخ/وقت صالح بالتنسيق المحدد. | يصف:DatetimeFormat::class طريقة: Validation::datetimeFormat(string $format) |
139 | الاسم: datetime.format.global الاستخدام: datetime.format.global | التأكد من أن الإدخال يشبه سلسلة تاريخ/وقت عامة صالحة كما هو محدد في مواصفات HTML5. | يصف:DatetimeFormatGlobal::class طريقة: Validation::datetimeFormatGlobal() |
140 | الاسم: datetime.format.local الاستخدام: datetime.format.local | التأكد من أن الإدخال يشبه سلسلة تاريخ ووقت محلية صالحة كما هو محدد في مواصفات HTML5. | يصف:DatetimeFormatLocal::class طريقة: Validation::datetimeFormatLocal() |
141 | الاسم: datestamp الاستخدام: datestamp | التأكد من أن الإدخال يشبه طابع تاريخ بشري، أو تنسيق DMY أو MDY، مفصولاً بنقطة أو شرطة أو شرطة مائلة. | يصف:Datestamp::class طريقة: Validation::datestamp() |
142 | الاسم: datestamp.ymd الاستخدام: datestamp.ymd | التأكد من أن الإدخال يبدو كختم تاريخ بتنسيق YMD بشري، مفصولاً بنقطة أو شرطة أو شرطة مائلة. | يصف:DatestampYmd::class طريقة: Validation::datestampYmd() |
143 | الاسم: datestamp.dmy الاستخدام: datestamp.dmy | التأكد من أن الإدخال يشبه طابع تاريخ بتنسيق DMY بشري، مفصولاً بنقطة أو شرطة أو شرطة مائلة. | يصف:DatestampDmy::class طريقة: Validation::datestampDmy() |
144 | الاسم: datestamp.mdy الاستخدام: datestamp.mdy | التأكد من أن الإدخال يشبه طابع تاريخ بتنسيق MDY، مفصولاً بنقطة أو شرطة أو شرطة مائلة. | يصف:DatestampMdy::class طريقة: Validation::datestampMdy() |
145 | الاسم: timestamp الاستعمال: timestamp | التأكد من أن الإدخال يبدو كطابع زمني بشري، بتنسيق 24 أو 12 ساعة مع أو بدون ثوانٍ. | يصف:Timestamp::class طريقة: Validation::timestamp() |
146 | الاسم: timestamp.12 الاستخدام: timestamp.12 | التأكد من أن الإدخال يبدو كطابع زمني بشري، وتنسيق 12 ساعة مع أو بدون ثوانٍ، وAM/PM اختياري. | يصف:Timestamp12::class طريقة: Validation::timestamp12() |
147 | الاسم: timestamp.hms الاستخدام: timestamp.hms | التأكد من أن الإدخال يشبه الطابع الزمني البشري، بتنسيق 24 أو 12 ساعة بالثواني. | يصف:TimestampHms::class طريقة: Validation::timestampHms() |
148 | الاسم: timestamp.hm الاستخدام: timestamp.hm | التأكد من أن الإدخال يبدو كطابع زمني بشري، بتنسيق 24 أو 12 ساعة بدون ثوانٍ. | يصف:TimestampHm::class طريقة: Validation::timestampHm() |
149 | الاسم: timestamp.ms الاستخدام: timestamp.ms | التأكد من أن الإدخال يشبه الطابع الزمني البشري، ويحتوي على الدقائق والثواني فقط. | يصف:TimestampMs::class طريقة: Validation::timestampMs() |
150 | الاسم: calender.day الاستخدام: calender.day | التأكد من أن الإدخال يبدو وكأنه يوم تقويمي في لقطة أو بتنسيق طويل ("Mon" أو "Monday"). | يصف:CalenderDay::class طريقة: Validation::calenderDay() |
151 | الاسم: calender.month الاستخدام: calender.month | التأكد من أن الإدخال يبدو مثل شهر تقويمي في لقطة أو بتنسيق طويل ("يناير" أو "يناير"). | يصف: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 صالح. | يصف:ColorHex::class طريقة: Validation::colorHex() |
171 | الاسم: color.hexShort الاستخدام: color.hexShort | التأكد من أن الإدخال هو لون CSS 3-Char-HEX صالح. | يصف:ColorHexShort::class طريقة: Validation::colorHexShort() |
172 | الاسم: color.hexLong الاستخدام: color.hexLong | التأكد من أن الإدخال هو لون CSS 6-Char-HEX صالح. | يصف:ColorHexLong::class طريقة: Validation::colorHexLong() |
173 | الاسم: color.hexAlpha الاستخدام: color.hexAlpha | التأكد من أن الإدخال هو لون CSS HEX-Alpha صالح (4 أو 8 أحرف). | يصف:ColorHexAlpha::class طريقة: Validation::colorHexAlpha() |
174 | الاسم: color.rgb الاستخدام: color.rgb | التأكد من أن الإدخال هو لون CSS RGB صالح. | يصف:ColorRgb::class طريقة: Validation::colorRgb() |
175 | الاسم: color.rgba الاستخدام: color.rgba | التأكد من أن الإدخال هو لون CSS RGBA صالح. | يصف:ColorRgba::class طريقة: Validation::colorRgba() |
176 | الاسم: color.rgb.new الاستخدام: color.rgb.new | التأكد من أن الإدخال هو لون CSS4 RGB صالح. | يصف:ColorRgbNew::class طريقة: Validation::colorRgbNew() |
177 | الاسم: color.hsl الاستخدام: color.hsl | التأكد من أن الإدخال هو لون CSS HSL صالح. | يصف:ColorHsl::class طريقة: Validation::colorHsl() |
178 | الاسم: color.hsla الاستخدام: color.hsla | التأكد من أن الإدخال هو لون CSS HSLA صالح. | يصف:ColorHsla::class طريقة: Validation::colorHsla() |
179 | الاسم: color.hsl.new الاستخدام: color.hsl.new | يؤكد أن الإدخال هو لون CSS4 HSL صالح. | يصف:ColorHslNew::class طريقة: Validation::colorHslNew() |
180 | الاسم: color.keyword الاستخدام: color.keyword | يؤكد أن الإدخال هو لون الكلمات الرئيسية CSS صالح (صارم ، كما في مواصفات CSS). | يصف:ColorKeyword::class طريقة: Validation::colorKeyword() |
181 | الاسم: ssn الاستخدام: ssn | يؤكد أن المدخلات هي SSN صالحة (رقم الضمان الاجتماعي الأمريكي). | يصف:Ssn::class طريقة: Validation::ssn() |
182 | الاسم: sin الاستخدام: sin | يؤكد أن المدخلات هي خطيئة صالحة (رقم التأمين الاجتماعي CA). | يصف:Sin::class طريقة: Validation::sin() |
183 | الاسم: nino الاستخدام: nino | يؤكد أن المدخلات هي نينو صالحة (رقم التأمين الوطني في المملكة المتحدة). | يصف:Nino::class طريقة: Validation::nino() |
184 | الاسم: vin الاستخدام: vin | يؤكد أن الإدخال هو VIN صالح (رقم تعريف السيارة). | يصف:Vin::class طريقة: Validation::vin() |
185 | الاسم: issn الاستخدام: issn | يؤكد أن المدخلات هي ISSN صالحة (الرقم التسلسلي القياسي الدولي). | يصف:Issn::class طريقة: Validation::issn() |
186 | الاسم: isin الاستخدام: isin | يؤكد أن المدخلات هي ISIN صالحة (رقم تحديد الأوراق المالية الدولية). | يصف:Isin::class طريقة: Validation::isin() |
187 | الاسم: isbn الاستخدام: isbn | يؤكد أن الإدخال هو ISBN صالح (رقم الكتاب القياسي الدولي). يمكن تحديد النوع (10/13) لتضييق النمط. | يصف:Isbn::class طريقة: Validation::isbn(string|int|null $type = null) |
188 | الاسم: imei الاستخدام: imei | يؤكد أن المدخلات هي IMEI صالحة (رقم هوية معدات المحطة المتنقلة الدولية). | يصف:Imei::class طريقة: Validation::imei() |
189 | الاسم: imei.sv الاستخدام: imei.sv | يؤكد أن المدخلات هي IMEI-SV صالحة (رقم هوية معدات المحطة المحمولة الدولية ورقم إصدار البرنامج). | يصف: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 | يؤكد أن المدخلات عبارة عن رقم بطاقة ائتمان ماستركارد صالح ، و/أو مساحات متوازنة و/أو شرطات مسموح بها. | يصف:CreditcardMastercard::class طريقة: Validation::creditcardMastercard() |
197 | الاسم: creditcard.discover الاستخدام: creditcard.discover | يؤكد أن الإدخال هو رقم بطاقة الائتمان Discover صالحة ، و/أو المساحات المتوازنة و/أو الشرطات مسموح بها. | يصف:CreditcardDiscover::class طريقة: Validation::creditcardDiscover() |
198 | الاسم: creditcard.americanExpress الاستخدام: creditcard.americanExpress | يؤكد أن المدخلات عبارة عن رقم بطاقة ائتمان أمريكان إكسبريس صالح ، و/أو مساحات متوازنة و/أو شرطات مسموح بها. | يصف:CreditcardAmericanExpress::class طريقة: Validation::creditcardAmericanExpress() |
199 | الاسم: creditcard.dinersClub الاستخدام: creditcard.dinersClub | يؤكد أن الإدخال هو رقم بطاقة ائتمان Diners Club صالحة ، و/أو المساحات المتوازنة و/أو الشرطات مسموح بها. | يصف:CreditcardDinersClub::class طريقة: Validation::creditcardDinersClub() |
200 | الاسم: creditcard.jcb الاستخدام: creditcard.jcb | يؤكد أن الإدخال هو رقم بطاقة ائتمان JCB صالح ، و/أو المساحات المتوازنة و/أو الشرطات مسموح بها. | يصف:CreditcardJcb::class طريقة: Validation::creditcardJcb() |
201 | الاسم: creditcard.maestro الاستخدام: creditcard.maestro | يؤكد أن الإدخال هو رقم بطاقة ائتمان مايسترو صالح ، و/أو المساحات المتوازنة و/أو الشرطات مسموح بها. | يصف:CreditcardMaestro::class طريقة: Validation::creditcardMaestro() |
202 | الاسم: creditcard.chinaUnionPay الاستخدام: creditcard.chinaUnionPay | يؤكد أن المدخلات عبارة عن رقم بطاقة ائتمان صيني 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 | يؤكد أن المدخلات عبارة عن رقم بطاقة نظام دفع مير صالح ، و/أو مساحات متوازنة و/أو شرطات مسموح بها. | يصف: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::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 ومقحة Laravel في تطبيق 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 وحوالي 4x مرات أسرع مع تمكين 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 ، والذي سيتم تحديثه مع كل دفعة/PR إلى Upsteam.
MAKS mighty Rule::setMessageTranslator()
. هذه الطريقة هي وسيلة مريحة لتعيين مترجم رسائل عالمي ، وتتطلب إغلاقًا يحصل على الرسالة الأولية (مع العناصر النائبة) كوسيطة ويجب أن تُرجع النسخة المترجمة من تلك الرسالة. mighty هو مشروع مفتوح المصدر مرخص بموجب ترخيص معهد ماساتشوستس للتكنولوجيا .
حقوق الطبع والنشر (ج) 2022 مروان السولتاني. جميع الحقوق محفوظة.