## مقدمة
مع توسّع تطبيقات Laravel، التعامل مع arrays وبيانات غير منظمة بيبقى صعب في الصيانة والتطوير.
هنا بيظهر دور **DTO – Data Transfer Objects**.
DTO بيوفر طريقة واضحة ومنظمة لنقل البيانات بين طبقات التطبيق.
---
## يعني إيه DTO؟
الـ DTO هو كلاس بسيط:
- بيحتوي على بيانات فقط
- بدون أي business logic
- مسؤوليته الوحيدة نقل البيانات بشكل منظم
---
## مشكلة استخدام Arrays
الاعتماد على:
- `$request->all()`
- `$data['email']`
بيسبب:
- أخطاء وقت التعديل
- كود صعب القراءة
- مشاكل في الاختبار والصيانة
---
## ليه DTO أفضل؟
استخدام DTO بيقدم:
- ✔️ Type safety
- ✔️ تنظيم واضح للبيانات
- ✔️ دعم قوي من الـ IDE
- ✔️ Refactoring أسهل
- ✔️ Controllers أنضف
---
## مثال DTO في Laravel
```php
final class CreateUserDTO
{
public function __construct(
public string $name,
public string $email,
public string $password,
) {}
}
الاستخدام:
$dto = new CreateUserDTO(
name: $request->name,
email: $request->email,
password: $request->password,
);
أفضل أماكن لاستخدام DTO
Service classes
Actions
API handling
Jobs
DDD architecture
----------------
الفرق بين DTO و Form Request
| المقارنة | DTO | Form Request |
| ---------------------- | --- | ------------ |
| Validation | ❌ | ✔️ |
| تنظيم البيانات | ✔️ | ❌ |
| قابلية إعادة الاستخدام | ✔️ | ⚠️ |
--------------------
الخلاصة
DTO مش تعقيد…
DTO هو تنظيم، أمان، واستثمار طويل المدى في جودة الكود.
لو مهتم بـ Clean Code في Laravel، لازم تبدأ تستخدم DTO.