Contrôleur à action unique avec le Framework Laravel
Grant TIWA
@kwemy94
Prérequis
Être capable de mettre sur pieds un projet Laravel.
Un contrôleur à action unique en Laravel est une classe qui contient une seule méthode, généralement la méthode __invoke()
. Cela permet de simplifier le code et de rendre chaque contrôleur responsable d’une seule tâche.
En supposant que nous avons un projet Laravel déjà crée, pour créer un contrôleur à action unique, il suffit d’exécuter la commande :
php artisan make:controller NomController --invokable
cette commande va nous générer un contrôleur avec une seule méthode __invoke()
, idéale pour nos actions spécifiques.
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class ExpenseController extends Controller{ /** * Handle the incoming request. */ public function __invoke(Request $request) { // Logique de traitement de dépense return response()->json(['message' => 'Décaissement effectué !']); }}
Définir la route vers le contrôleur
Pour définir une route qui utilise ce contrôleur, vous pouvez faire comme suit : Dans votre fichier web.php,
Route::post('/my-expense', ExpenseController::class);
Dans cet exemple, le contrôleur ExpenseController
gère uniquement la logique de traitement. La méthode __invoke()
est automatiquement appelée lorsque la route /my-expense est accédée.
Bonnes pratiques
Dans un contrôleur à action unique en Laravel, certaines pratiques sont généralement déconseillées pour maintenir la clarté et la simplicité du code. Voici quelques actions à éviter :
Multiples Méthodes : Ajouter plusieurs méthodes dans un contrôleur à action unique va à l’encontre de son principe de base. Ce type de contrôleur doit se concentrer sur une seule tâche, représentée par la méthode __invoke()
.
Logique Complexe : Évitez d’inclure une logique trop complexe directement dans le contrôleur. Il est préférable de déléguer cette logique à des services ou des classes dédiées pour maintenir le contrôleur léger et facile à comprendre.
Dépendances Multiples : Injecter trop de dépendances dans le constructeur peut rendre le contrôleur difficile à maintenir.
Manipulation Directe de la Base de Données : Évitez d’effectuer des opérations directes sur la base de données dans le contrôleur. Utilisez des modèles ou des services pour ces opérations afin de respecter le principe de séparation des préoccupations
En suivant ces recommandations, vous pouvez maintenir vos contrôleurs à action unique simples, clairs et faciles à maintenir.