À quel moment faut-il arrêter de mettre de la logique métier dans un Controller Laravel ?

Posée il y a 1 mois 96 vues Résolue
Laravel CI mascot
0

Un Controller qui grossit devient vite difficile à maintenir.
Quels signes vous indiquent qu’il est temps d’extraire la logique vers un Service, Action, Job ou autre couche ?

LeadTech-Exceliam
LeadTech-Exceliam
il y a 1 mois

1 Réponse

Solution acceptée
1

Très bonne question !
L'idéal est d'appliquer SOLID dès le départ avec des contrôleurs légers (skinny controllers).
Mais pour savoir quand et où extraire, voici les 4 signes concrets que j'utilise (exemple sur la création d'une facture / invoice) :
1)Trop de vérifications au début ? (champs obligatoires, prix positifs)
->J'extrais vers une Form Request (StoreInvoiceRequest).

2)Des calculs ou des règles métier ? (calculer la TVA à 18%, générer le numéro séquentiel)
->J'extrais vers une Action (CreateInvoiceAction). Le contrôleur ne doit jamais faire de calculs.

3)Une action lente ou un service externe ? (envoyer un email de facture, générer un PDF)
-> J'extrais vers une tâche de fond (Job) (SendInvoiceNotificationJob) dans une file d'attente (Queue Redis). L'utilisateur n'a pas à attendre.

4)Des conditions sur les rôles ? (if ($user->role === 'accountant'))
->J'extrais vers une politique d'accès (Policy) (InvoicePolicy).

Le résultat : Mon contrôleur fait 5 lignes. Le code ne s'emmêle pas, il est ultra-facile à tester et n'importe quel développeur comprend le projet en 5 minutes !

Achi Jathniel
Achi Jathniel
il y a 1 mois

Votre réponse

Vous devez être connecté pour répondre.

Se connecter avec GitHub