شرح صفوف ومحتوى الفقرة
يقدّم 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";