معماری لایهای و Repository Pattern در PHP
Repository Pattern در Laravel همیشه اجباری نیست، اما در پروژههایی با چند منبع داده یا قوانین پیچیدهٔ دسترسی، ارزش خود را نشان میدهد.
لایهها
- HTTP: Controller، Request، Resource
- Application: Service و Action classes
- Domain: Model، Enum، Policy
- Infrastructure: Repository، Job، Notification
Repository چه کاری انجام میدهد؟
Queryهای تکراری و فیلترهای مشترک (مثلاً published()) در یک جا متمرکز میشوند. Service به جای Model مستقیم، Repository را inject میکند.
تستپذیری
در تست Feature میتوانید Repository را mock کنید یا از دیتابیس in-memory SQLite استفاده کنید بدون آنکه Controller را تغییر دهید.
اشتباهات رایج
ساخت Repository برای هر Model بدون منطق اضافه فقط boilerplate ایجاد میکند. وقتی فقط find و all دارید، همان Eloquent کافی است.
پایان
معماری باید مشکل واقعی حل کند. با نیاز پروژه شروع کنید و در صورت رشد، لایهها را اضافه کنید — نه برعکس.