التحقق من صحة البيانات في PHP: دليل شامل للأدوات والمكتبات

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

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

ابدأ الدورة

التحقق من صحة البيانات في PHP: من الدوال المدمجة إلى المكتبات الاحترافية



التحقق من صحة البيانات هو أحد الركائز الأساسية لتطبيق ويب آمن ومستقر. في PHP، توجد طرق عديدة: من الدوال المدمجة البسيطة إلى المكتبات القوية التي تطبق نمط "سلسلة المسؤولية" (Chain of Responsibility) وتدعم سيناريوهات التحقق المعقدة. في هذه المقالة، سنستعرض ثلاث أدوات شائعة للتحقق من الصحة في PHP: Respect\\Validation و Symfony Validator و Aura.Filter، بالإضافة إلى تذكير بالإمكانيات المدمجة في اللغة.



1. الدوال المدمجة في PHP

قبل توصيل المكتبات الخارجية، يجدر التذكير بأن PHP توفر أدوات أساسية لتصفية البيانات والتحقق منها:

  • filter_var() — التحقق من البيانات وتنظيفها حسب المرشحات (البريد الإلكتروني، URL، عدد صحيح، إلخ)
  • preg_match() — التحقق باستخدام التعبيرات المنتظمة
  • empty() و is_numeric() و strlen() — فحوصات بسيطة
  • ctype_alpha() و ctype_digit() — التحقق من مجموعة الأحرف

مثال على استخدام filter_var:

<?php$email = "user@example.com";if (filter_var($email, FILTER_VALIDATE_EMAIL)) {    echo "البريد الإلكتروني صحيح";} else {    echo "بريد إلكتروني غير صحيح";}?>


2. Respect\\Validation

Respect\\Validation هي واحدة من أشهر مكتبات التحقق من الصحة في PHP. ميزتها الرئيسية هي الصياغة المتسلسلة القابلة للقراءة (fluent interface) وعدد كبير من القواعد الجاهزة (أكثر من 100 قاعدة).

التثبيت

composer require respect/validation

مثال على الاستخدام

<?phpuse Respect\\Validation\\Validator as v;

$user = [ 'name' => 'إيفان', 'email' => 'ivan@test.com', 'age' => 25, 'website' => 'https://example.com'];

$validator = v::key('name', v::stringType()->length(2, 50)) ->key('email', v::email()) ->key('age', v::intType()->between(18, 120)) ->key('website', v::optional(v::url()));

try { $validator->assert($user); echo "البيانات صالحة!";} catch (\\Respect\\Validation\\Exceptions\\NestedValidationException $e) { print_r($e->getMessages());}?>

تدعم المكتبة رسائل خطأ مخصصة، والتحقق المتداخل من المصفوفات، كما تسمح بدمج القواعد من خلال allOf() و oneOf() و noneOf().



3. Symfony Validator

مكون Symfony Validator هو جزء من نظام Symfony البيئي، ولكن يمكن استخدامه بشكل منفصل. وهو معيار صناعي للتحقق من صحة هياكل البيانات المعقدة مع دعم التعليقات التوضيحية وتكوينات XML و YAML.

التثبيت

composer require symfony/validator

مثال باستخدام السمات (PHP 8+)

<?phpuse Symfony\\Component\\Validator\\Validation;use Symfony\\Component\\Validator\\Constraints as Assert;

class User{ #[Assert\\NotBlank] #[Assert\\Length(min: 2, max: 50)] public string $name;

#[Assert\\NotBlank] #[Assert\\Email] public string $email;

#[Assert\\NotBlank] #[Assert\\Positive] #[Assert\\LessThan(150)] public int $age;}

$user = new User();$user->name = 'إيفان';$user->email = 'ivan@test.com';$user->age = 25;

$validator = Validation::createValidatorBuilder() ->enableAttributeMapping() ->getValidator();

$violations = $validator->validate($user);

if (count($violations) === 0) { echo "تم اجتياز التحقق!";} else { foreach ($violations as $violation) { echo $violation->getPropertyPath() . ': ' . $violation->getMessage() . ""; }}?>

يدعم Symfony Validator مجموعات التحقق، والتحقق المتسلسل

توصيات