انتقل إلى محتوى الدرس

Backed Enums with from and tryFrom التعدادات المدعومة بقيم ودالتا from و tryFrom

ابنِ نماذج بيانات قوية في PHP 8.4 باستخدام التعدادات Enums والأصناف للقراءة فقط readonly وخطافات الخصائص الحديثة.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

عندما تحتاج لتخزين التعداد في قاعدة البيانات أو إرساله عبر النماذج وملفات JSON، عرّف تعداداً مدعوماً بقيم قياسية (Backed Enum) من النوع string أو int.

  • حدد نوع القيمة المدعومة بعد نقطتين رأسيتين (enum OrderStatus: string) وأسند قيمة فريدة لكل حالة.
  • اقرأ القيمة النصية أو الرقمية للحالة عبر الخاصية المدمجة $case->value.
  • حوّل مدخلات المستخدم أو قاعدة البيانات بأمان إلى حالة تعداد عبر الدالة OrderStatus::tryFrom($raw) التي تُرجع null عند عدم التطابق.

تُرجع tryFrom("shipped") الحالة OrderStatus::Shipped، بينما تُرجع tryFrom("unknown_state") القيمة null بأمان تام.

PHP
<?php
enum OrderStatus: string {
    case Pending = "pending";
    case Shipped = "shipped";
    case Cancelled = "cancelled";
}
$valid = OrderStatus::tryFrom("shipped");
$invalid = OrderStatus::tryFrom("unknown_state");

echo "Valid   : " . ($valid?->name ?? "NULL") . " ({$valid?->value})\n";
echo "Invalid : " . ($invalid?->name ?? "NULL (Safe Fallback)") . "\n";