شرح صفوف ومحتوى الفقرة
إن وسم الخاصية بـ readonly (في PHP 8.1) أو وسم الصنف بالكامل كـ readonly class (في PHP 8.2+) يضمن إسناد قيم الخصائص مرة واحدة فقط ومنع تعديلها لاحقاً.
- كتابة
readonly class TransferRequestتجعل كل خاصية معلنة داخل الصنف للقراءة فقط (readonly) تلقائياً. - يجب إلزاماً تحديد نوع البيانات لكل خاصية داخل الصنف
readonly(ويمكن استخدامmixedعند تعدد الأنواع). - دمج
readonly classمع ترقية خصائص الباني ينشئ كائنات نقل بيانات غير قابلة للتعديل (DTOs) في بضعة أسطر نظيفة.
بمجرد إنشاء الكائن $dto، يمنع محرك PHP أي محاولة لتغيير قيم خصائصه مثل $dto->amountCents = 0; في أي مكان بالكود.
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";