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

Adding Methods and Interfaces to Enums إضافة الدوال والواجهات داخل Enums

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

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

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

التعدادات في PHP كائنات غنية المزايا؛ فيمكنها تطبيق الواجهات (implements)، وتعريف الدوال التي تستخدم $this وتعبير match($this).

  • داخل دالة التعداد، تشير الكلمة $this إلى حالة التعداد المحددة التي تم استدعاء الدالة عليها.
  • دمج دوال التعداد مع تعبير match($this) يجمع العناوين والألوان والصلاحيات في مكان واحد منظم.
  • لا يمكن للتعدادات احتواء خصائص متغيرة ولا يمكنها الوراثة عبر extends.

يطبق التعداد Role الواجهة HasBadge ويربط كل حالة بلون الشارة المقابل عبر تعبير match($this).

PHP
<?php
interface HasBadge { public function badgeColor(): string; }
enum Role: string implements HasBadge {
    case Admin = "admin";
    case Viewer = "viewer";
    public function badgeColor(): string {
        return match ($this) {
            self::Admin => "purple",
            self::Viewer => "slate",
        };
    }
}
echo Role::Admin->value . " badge=" . Role::Admin->badgeColor() . "\n";