Comment mettre en place un script php au sein de symfony exécutable en ligne de commande
Personnellement, j’ai souvent de petits scripts à faire tourner en pleine nuit pour des opérations de maintenance. Et si ces scripts influencent directement l’une de mes apps symfony, je passe par des commandes customs.
Facile à mettre en place, on reste dans le même environnement,... bref les avantages sont nombreux.
Création d’une commande custom
Première chose à savoir, vos commandes se regroupent dans le dossier “src/Command”.
Je vais vous donner le fichier complet et vous expliquer les différentes parties importantes après.
writeln("Execution de la commande de test");
if( false ){
$output->writeln("Erreur d'execution");
return Command::FAILURE;
}
if( false ){
$output->writeln("Arguments invalide");
return Command::INVALID;
}
return Command::SUCCESS;
}
}
#[AsCommand()]
L’attribut AsCommand permet de définir qu’il s’agit bien d’une commande et mieux encore, comment l’appeler.
Plusieurs paramètres sont possible:
- name: Nom de la commande qui sera utilisé dans la commande appelée
- description: Petite description pouvant s’afficher dans le listing des commandes
- hidden: Affiche ou non cette commande dans le listing
- aliases: Permet plusieur nom pour une même commande
$output->writeln()
Pas forcément nécessaire si vous exécutez la commande via un cron… encore que vous souhaitez peut-être voir les logs de votre commande.
Toujours est-il que la fonction writeIn() permet de faire un affichage dans la console.
$output->writeln(‘Bonjour’);
Il est possible d’afficher plusieurs lignes en une fois en passant un tableau en paramètre.
$output->writeln([
'Ligne 01',
'Ligne 02',
'Ligne 03',
]);
Exécution
La commande peut être facilement appelée via la commande suivante
php bin/console app:test