شرح صفوف ومحتوى الفقرة
اجمع بين التعدادات (Enums) والأصناف للقراءة فقط (Readonly) وخطافات الخصائص والرؤية غير المتماثلة لبناء نماذج بيانات حديثة ومحمية ذاتياً في PHP 8.4.
- استخدم التعدادات المدعومة (Backed Enums) لتمثيل الحالات المحدودة كالأدوار والعملات وحالات الطلبات.
- استخدم
readonly classلكائنات القيم الثابتة وطلبات API وبيانات الأحداث التي لا تتغير بعد إنشائها. - استخدم خطافات الخصائص و
public private(set)في PHP 8.4 للكيانات القابلة للتحديث المنضبط عبر دوال الصنف.
يجمع الصنف SubscriptionSnapshot بين readonly class والتعداد المدعوم PlanTier لضمان سلامة النوع والحالة معاً.
| الميزة البرمجية | إصدار PHP | حالة الاستخدام الأساسية |
|---|---|---|
Pure & Backed enum | PHP 8.1+ | Fixed set of states, roles, or types (tryFrom) |
readonly properties | PHP 8.1+ | Write-once immutable object properties |
readonly class | PHP 8.2+ | Full immutable DTOs and Value Objects |
Property Hooks (get / set) | PHP 8.4+ | Inline normalization and computed properties |
Asymmetric Visibility (public private(set)) | PHP 8.4+ | Public read access with private/protected mutation |
<?php
enum PlanTier: string { case Free = "free"; case Pro = "pro"; }
readonly class SubscriptionSnapshot {
public function __construct(public string $account, public PlanTier $tier) {}
}
$sub = new SubscriptionSnapshot("acc_402", PlanTier::from("pro"));
echo "{$sub->account} is on {$sub->tier->name} ({$sub->tier->value})\n";
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
اجمع بين التعدادات (Enums) والأصناف للقراءة فقط (Readonly) وخطافات الخصائص والرؤية غير المتماثلة لبناء نماذج بيانات حديثة ومحمية ذاتياً في PHP 8.4. استخدم التعدادات المدعومة (Backed Enums) لتمثيل الحالات المحدودة كالأدوار والعملات وحالات الطلبات. استخدم readonly class لكائنات القيم الثابتة وطلبات API وبيانات الأحداث التي لا تتغير بعد إنشائها. استخدم خطافات الخصائص وpublic private(set) في PHP 8.4 للكيانات القابلة للتحديث المنضبط عبر دوال الصنف.