Respect/Validation PHP: دليل شامل مع أمثلة عملية

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

Respect/Validation PHP: دليل شامل مع أمثلة عملية

Respect/Validation هي مكتبة قوية وأنيقة للتحقق من صحة البيانات (Validation) في لغة PHP. على عكس الدوال المدمجة في PHP (مثل filter_var أو التعبيرات المنتظمة)، تقدم Respect/Validation واجهة كائنية التوجه (Object-Oriented) وسلسة (Fluent) لبناء قواعد تحقق معقدة. تتيح لك المكتبة إنشاء عمليات تحقق قابلة للقراءة وموثقة ذاتيًا، مما يسهل صيانتها وتوسيعها.

لماذا تحتاج هذه المكتبة؟ في أي تطبيق ويب، يجب التحقق من مدخلات المستخدم: البريد الإلكتروني، كلمات المرور، الروابط، عناوين IP، التواريخ، النطاقات الرقمية، وغيرها الكثير. بدون نظام تحقق، يتحول الكود بسرعة إلى فوضى من جمل if-else والتعبيرات المنتظمة. تحل Respect/Validation هذه المشكلة من خلال توفير أكثر من 100 قاعدة جاهزة (مدققات) يمكن دمجها لإنشاء سلاسل تحقق معقدة. تدعم المكتبة أيضًا رسائل خطأ مخصصة بلغات مختلفة، مما يجعلها الخيار الأمثل للمشاريع الدولية.

الميزة الأساسية هي سلاسل التحقق (Validation Chains). يمكنك دمج عدة قواعد في سلسلة واحدة، ويتم تطبيقها بالتسلسل. إذا فشلت قاعدة واحدة على الأقل، يتوقف التحقق (افتراضيًا) ويتم إرجاع خطأ. يتيح لك ذلك كتابة كود مضغوط ولكنه معبر جدًا.

التثبيت

يتم التثبيت عبر Composer، مدير الحزم القياسي لـ PHP. قم بتنفيذ الأمر التالي في الطرفية (Terminal) داخل مجلد مشروعك:

composer require respect/validation

بعد التثبيت، قم بتضمين أداة التحميل التلقائي (Autoloader) الخاصة بـ Composer في ملف PHP الخاص بك:

require_once 'vendor/autoload.php';

البداية السريعة

مثال عملي بسيط للتحقق من البريد الإلكتروني وكلمة المرور:

use Respect\Validation\Validator as v;

$email = 'user@example.com';
$password = 'StrongP@ss1';

// إنشاء سلسلة تحقق
$validator = v::email()->length(6, 100)->notEmpty();

if ($validator->validate($email)) {
    echo "البريد الإلكتروني صحيح!";
} else {
    // الحصول على مصفوفة الأخطاء
    $errors = $validator->getMessages();
    print_r($errors);
}

// التحقق من كلمة المرور
$passwordValidator = v::alnum()->noWhitespace()->length(8, 32);
if ($passwordValidator->validate($password)) {
    echo "كلمة المرور صحيحة!";
}

في هذا المثال، v::email() يتحقق من تنسيق البريد الإلكتروني، length(6, 100) يتحقق من طول النص، و notEmpty() يتحقق من أن القيمة ليست فارغة. جميع القواعد مدمجة في سلسلة واحدة.

الدوال والفئات الأساسية

دعنا نستعرض 8 دوال (قواعد) رئيسية في المكتبة. كل قاعدة هي دالة ثابتة (Static Method) من الفئة Respect\Validation\Validator (يتم استيرادها عادةً كـ v).

1. v::email()

التوقيع: public static function email(): Validator

الوظيفة: تتحقق مما إذا كانت القيمة عبارة عن بريد إلكتروني صحيح وفقًا لمعيار RFC 5321/5322.

مثال:

$validator = v::email();
var_dump($validator->validate('test@test.com')); // true
var_dump($validator->validate('not-an-email')); // false

2. v::alnum()

التوقيع: public static function alnum(string $additionalChars = ''): Validator

الوظيفة: تتحقق مما إذا كان النص يحتوي فقط على أحرف (a-z, A-Z) وأرقام (0-9). يمكنك تمرير أحرف إضافية مسموح بها.

مثال:

$validator = v::alnum();
var_dump($validator->validate('abc123')); // true
var_dump($validator->validate('hello world')); // false (المسافة غير مسموحة)

// مع أحرف إضافية
$validatorWithDash = v::alnum('-');
var_dump($validatorWithDash->validate('my-name')); // true

توصيات