تكرار السؤال: …
الإجابة المختصرة
فئة تجعل كل خصائصها readonly تلقائياً وتمنع إضافة أي خصائص ديناميكية، مما يضمن ثبات حالة الكائن بعد إنشائه.
الشرح
تعد كائنات القيمة غير القابلة للتعديل (Immutable Value Objects) من ركائز الـ Domain-Driven Design والبرمجة الآمنة. قبل PHP 8.2 كان المطور يضطر لكتابة readonly أمام كل خاصية. عند وسم الفئة بـ readonly class، يضمن المحرك تعيين كل الخصائص في الباني وعدم إمكانية تغييرها مطلقاً طوال دورة حياة الكائن.
مثال بالكود
readonly class Money {
public function __construct(
public int $amount,
public string $currency
) {}
}أخطاء شائعة
- محاولة وسم فئة تحتوي على خصائص غير محددة الأنواع (Untyped Properties) بـ readonly حيث يشترط المحرك تحديد النوع.
أسئلة متابعة
- ما هي الفئات المجهولة (Anonymous Classes) ومتى يتم استخدامها في PHP؟
- كيف تختلف معاملات الكائنات (Objects by Reference) عن المتغيرات العادية في تمرير دوال PHP؟