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

PHP 8.4 Property Hooks and Visibility خطافات الخصائص ورؤية التعديل في PHP 8.4

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

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

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

يقدّم PHP 8.4 خطافات الخصائص الأصلية (get وset) والرؤية غير المتماثلة (public private(set)) للاستغناء عن دوال القراءة والتعديل التقليدية المكررة.

  • أرفق خطاف set مباشرة بالخاصية (مثل public string $email { set => strtolower(trim($value)); }) لتنقية القيمة تلقائياً عند كل إسناد.
  • أنشئ خاصية افتراضية محسوبة باستخدام خطاف get فقط دون حجز مساحة تخزين إضافية في الكائن.
  • استخدم الرؤية غير المتماثلة public private(set) int $points = 0; لكي يُسمح بقراءة الخاصية من الخارج مع حصر تعديلها داخل الصنف نفسه فقط.

إسناد $p->name يشغل خطاف set في PHP 8.4 تلقائياً لتهذيب الاسم، بينما تُقرأ $loyaltyPoints علناً ولا تُعدل إلا عبر دوال الصنف.

PHP
<?php
class CustomerProfile {
    public string $name {
        set => ucwords(strtolower(trim($value)));
    }
    public private(set) int $loyaltyPoints = 100;
    public function addPoints(int $pts): void { $this->loyaltyPoints += $pts; }
}
$p = new CustomerProfile();
$p->name = "  tariq al-ali  ";
$p->addPoints(50);
echo "{$p->name} | Points: {$p->loyaltyPoints}\n";