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

Immutable DTOs with readonly Classes بناء كائنات ثابتة بالأصناف readonly

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

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

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

إن وسم الخاصية بـ readonly (في PHP 8.1) أو وسم الصنف بالكامل كـ readonly class (في PHP 8.2+) يضمن إسناد قيم الخصائص مرة واحدة فقط ومنع تعديلها لاحقاً.

  • كتابة readonly class TransferRequest تجعل كل خاصية معلنة داخل الصنف للقراءة فقط (readonly) تلقائياً.
  • يجب إلزاماً تحديد نوع البيانات لكل خاصية داخل الصنف readonly (ويمكن استخدام mixed عند تعدد الأنواع).
  • دمج readonly class مع ترقية خصائص الباني ينشئ كائنات نقل بيانات غير قابلة للتعديل (DTOs) في بضعة أسطر نظيفة.

بمجرد إنشاء الكائن $dto، يمنع محرك PHP أي محاولة لتغيير قيم خصائصه مثل $dto->amountCents = 0; في أي مكان بالكود.

مخطط تدفق التنفيذ العملي لقسم بناء كائنات ثابتة بالأصناف readonly في لغة PHP
PHP
<?php
readonly class PaymentDto {
    public function __construct(
        public string $txId,
        public int $amountCents,
        public string $currency = "SAR"
    ) {}
}
$dto = new PaymentDto("TX-900", 25000);
echo "{$dto->txId}: {$dto->amountCents} {$dto->currency}\n";