Khi một ứng dụng Laravel phát triển, cách tiếp cận "fat controller / fat model" mặc định trở nên khó bảo trì. Các app lớn hơn hưởng lợi từ các tầng kiến trúc bổ sung — service class, action class, repository, form request, và tổ chức domain rõ ràng — để giữ business logic có tổ chức, dễ test, và dễ bảo trì.
Vấn đề: logic kết thúc ở những chỗ sai
App nhỏ: logic trong controller và model là ổn.
App lớn: controller phình to, model trở thành "god object", logic bị lặp
→ khó test, bảo trì, và suy luận. Tách logic ra các tầng chuyên dụng.
Service class — đóng gói business logic
{
{}
{
DB::(function () ($, $) { /* ... */ });
}
}
{
->(->(), ->());
}
