enum
التعدادات Enums enum
نوع بيانات يحدّد مجموعة قيم ثابتة ومحدّدة مسبقًا، أأمن من النصوص أو الأرقام السحرية.
enum (منذ PHP 8.1) يعرّف حالات case ثابتة يتحقّق منها PHP كنوع حقيقي. الـ Pure Enum بلا قيمة مرتبطة (وصول عبر ::CaseName). الـ Backed Enum يربط كل حالة بقيمة نصّية أو رقمية عبر : string أو : int، مفيد جدًا للتخزين في قاعدة بيانات.
مع Backed Enum: ::from(value) يحوّل قيمة خام إلى حالة (يرمي خطأ إن لم تُطابق أي حالة)، و::tryFrom(value) تفعل نفس الشيء لكن تُعيد null بأمان بدل الخطأ، و::cases() تُعيد كل الحالات كمصفوفة.
الصياغة
enum Name: string {
case CaseA = "a";
case CaseB = "b";
}📄 مثال
enum OrderStatus: string {
case Pending = "pending";
case Shipped = "shipped";
}
$s = OrderStatus::from("shipped");
echo $s->name; // Shipped
echo $s->value; // shippedأهم النقاط
| العنصر | الوظيفة |
|---|---|
| ::cases() | يُعيد كل حالات التعداد كمصفوفة |
| ::from(value) | يحوّل قيمة خام لحالة، يرمي ValueError إن لم تُطابق |
| ::tryFrom(value) | نفس from لكن تُعيد null بدل رمي خطأ |
💡 نصائح عملية
- استخدم Backed Enum (: string) عند الحاجة لتخزين الحالة في قاعدة بيانات
⚠️ أخطاء شائعة
- استخدام ::from() مع قيمة غير موجودة بدل ::tryFrom() الآمنة فيرمي ValueError غير متوقّع
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار PHP الكامل بالعربي.