Introduction
Les commandes Artisan de Laravel sont des outils puissants pour automatiser et simplifier des tâches récurrentes ou complexes dans vos projets. Ce guide vous présente les concepts essentiels pour créer, personnaliser et exploiter pleinement ces commandes. De la gestion des arguments à l'intégration avec le planificateur, découvrez les bonnes pratiques pour optimiser vos workflows en Laravel.
Dans Laravel, l'écriture des commandes artisan personnalisées est une compétence essentielle pour automatiser les tâches récurrentes ou complexes. Voici les concepts clés à maîtriser :
Création d'une commande artisan
Utiliser la commande suivante pour générer une nouvelle commande
php artisan make:command NomDeLaCommand
la commande ci-dessus permet de générer un fichier dans le repertoire app/Console/Commands. Ce fichier générer contient les sections suivantes:
protected $signature = 'nom:commande {argument?} {--option}';protected $description = "description de la commande";public function handle() {//code....}
$signature : La définition de la commande, incluant son nom et ses arguments ou options.
handle() est la méthode où la logique de la commande est implémentée.
Arguments et options
la $signature peut contenir des variables obligatoire et/ou facultatifs.
Exemple: {nom} ou {nom?} (facultatif).
les options sont préfixées par -- et sont souvent utilisées pour les paramètres.
Exemple: {--force} ou {--type=}
Interaction utilisateur
les méthodes de la classe Command permettent une interaction avec l'utilisateur.
$this->info('Message d\'information');$this->error('Message d\'erreur');
Le code ci-dessus permet un affichage.
Nous avons également des méthodes permettant de poser des questions à l'utilisateur et aussi proposer des options.
$name = $this->ask('Quel est votre nom ?');$choice = $this->choice('Choisissez une option', ['Option1', 'Option2'], 0);
$this->choice : Appelle la méthode pour afficher un prompt interactif avec des choix multiples.
Paramètre 1 : Choisissez une option : Texte affiché à l'utilisateur pour expliquer ce qui est attendu.
Paramètre 2 : ['Option1', 'Option2'] : Tableau contenant les options disponibles pour l'utilisateur.
Paramètre 3 : 0 : Indice par défaut de l'option sélectionnée si l'utilisateur ne fait aucun choix (ici, Option1 sera sélectionnée par défaut).
D'autres commandes artisan peuvent également être exécutées dans notre fichier de commande via la méthode call()
$this->call('nom:autrecommande', ['--option' => 'valeur']);
Utilisation des services et dépendances
L'injection des services peut se faire via le constructeur ou directement dans la méthode handler.
public function __construct(ExampleService $exampleService){ parent::__construct(); $this->exampleService = $exampleService;}
Validation et gestion des erreurs
Il est important de valider les arguments ou options avant de poursuivre la logique.
if (!$this->hasArgument('nom')) { $this->error('Argument manquant'); return 1; // Code d'erreur}
Test des commandes artisan
Utiliser les fonctionnalités de tests intégrées pour simuler et tester les commandes.
$this->artisan('nom:commande') ->expectsQuestion('Quel est votre nom ?', 'Jean') ->expectsOutput('Message attendu') ->assertExitCode(0);
Gestion des tâches récurrentes (Scheduled Commands)
On peut également enregistrer une tâche dans le planificateur de tâches app/Console/Kernel.php afin de rendre automatique l'exécution de cette dernière.
protected function schedule(Schedule $schedule){ $schedule->command('nom:commande')->daily();}
Cas pratique
Créez une commande simple qui demande le nom de l'utilisateur et affiche un message de bienvenue. Ensuite, intégrez-la dans le planificateur pour qu'elle s'exécute tous les jours.
A nos clavier ...😍😎👨⚖️
Grant TIWA