Règles Laravel DMV
Statut
Document de règles projet — v1.0 — relu le 2026-05-10.
Objectif
Règles spécifiques au développement du backend Laravel API DMV, applicables aux développeurs et aux agents IA intervenant sur api/.
Règles strictes
- Ne jamais retourner autre chose que du JSON — l'API est JSON-only.
- Ne jamais exposer de trace de pile, secret ou donnée personnelle dans une réponse d'erreur.
- Ne jamais utiliser
dd(),dump()ouvar_dump()dans le code en production. - Ne jamais contourner Sanctum ou les policies pour accéder à des données restreintes.
- Ne jamais modifier les migrations Supabase depuis Laravel — utiliser les migrations de test uniquement.
- Ne jamais stocker de secrets dans
AppSetting— c'est une table de paramètres applicatifs, pas un coffre. - Ne jamais ajouter de logique métier dans un contrôleur — tout passe par les services.
- Ne jamais ignorer les tests — les tests existants doivent rester verts après chaque modification.
Structure à respecter
- Controllers : valider → déléguer au service → répondre.
- Services : porter la logique métier, orchestrer les modèles, DTOs et intégrations.
- Models : représenter les données, scopes, relations, casts.
- DTOs : objets de transfert immuables entre service et contrôleur.
- Policies : règles d'autorisation isolées et testables.
- Requests : validation des entrées HTTP.
Principes directeurs
- Un module = un dossier
app/Modules/{Module}/avec sa structure complète. - Les erreurs métier sont des exceptions typées mappées dans
bootstrap/app.php. - Les jobs planifiés sont déclarés dans
bootstrap/app.phpviawithSchedule(). - Les middlewares de module sont enregistrés dans
bootstrap/app.phpviaalias(). declare(strict_types=1)en tête de chaque fichier PHP.
Recommandations
- Préférer les Form Requests aux validations inline dans les contrôleurs.
- Utiliser les scopes Eloquent pour les filtres réutilisables.
- Tester les services avec des tests unitaires, les contrôleurs avec des tests d'intégration.
- Documenter les endpoints non évidents avec des commentaires PHPDoc dans le contrôleur.
- Éviter les N+1 queries — utiliser
with()pour les relations nécessaires.
Anti-patterns à éviter
- Logique métier dans un contrôleur.
- Requêtes SQL brutes hors des cas justifiés.
- Couplage direct entre modules (passer par un service ou une interface).
- Retourner des modèles Eloquent bruts en réponse API (utiliser des DTOs ou Resources).
- Exposer des colonnes sensibles sans les ajouter à
$hidden.