شرح صفوف ومحتوى الفقرة
عندما تحتاج لتخزين التعداد في قاعدة البيانات أو إرساله عبر النماذج وملفات 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";