Maison >développement back-end >tutoriel php >Console Symfony au-delà des bases - aides et autres outils
Cet article a été révisé par des pairs par Wern Ancheta. Merci à tous les pairs examinateurs de SitePoint pour avoir fait du contenu SitePoint le meilleur possible!
Il est indéniable à quel point les commandes de console peuvent être utiles lors du développement de logiciels. Il n'y a pas si longtemps, nous avons réintroduit le composant de la console Symfony.
Ce composant nous permet de créer des commandes CLI structurées et testables. Nous avons créé des commandes simples et les avons testées; Mais lorsque nos commandes deviennent plus grandes et plus complexes, nous avons besoin d'un ensemble différent d'outils.
C'est ce que nous allons regarder aujourd'hui: les outils avancés de la console Symfony.
Créons une commande que nous pouvons utiliser pour afficher certaines de ces fonctionnalités. La plupart des fonctionnalités de base ont été montrées dans la réintroduction de l'article Symfony Console, alors assurez-vous de le vérifier avant de progresser - c'est une lecture rapide mais utile!
<span>composer require symfony/console </span>
Les informations essentielles sur le compositeur peuvent être trouvées ici, et si vous n'êtes pas familier avec des environnements PHP isolés bien conçus pour développer vos applications PHP comme Vagrant, nous avons un livre fantastique expliquant tout cela en profondeur disponible pour acheter ici.
Créons une commande pour un favori de tous les temps: FizzBuzz.
Fizzbuzz est un problème simple souvent utilisé dans les entretiens de programmation pour affirmer la compétence en programmation de la personne interrogée. La définition de FizzBuzz se présente normalement sous la forme suivante:
Écrivez un programme qui imprime les nombres de 1 à x. Mais pour les multiples de trois «fizz» imprimés au lieu du nombre et pour les multiples de cinq «buzz» imprimés. Pour les nombres qui sont des multiples de trois et cinq, imprimez «FizzBuzz».
Notre commande recevra un argument qui sera la limite supérieure pour FizzBuzz.
Tout d'abord, créons notre classe FizzBuzz.
<span>composer require symfony/console </span>
assez simple. La méthode FirstNfizzBuzz () imprime les résultats de FizzBuzz pour un $ maxvalue de nombres. Il le fait en appelant la méthode CalculatefizzBuzz () récursivement.
Ensuite, écrivons notre commande. Créez un fichier fizzcommand.php avec le contenu suivant:
<span><span><?php </span></span><span><span>declare(strict_types=1); </span></span><span> </span><span><span>namespace FizzBuzz; </span></span><span> </span><span><span>class Fizzbuzz{ </span></span><span> </span><span> <span>public function isFizz(int $value): bool{ </span></span><span> <span>if($value % 3 === 0){ </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> <span>return false; </span></span><span> <span>} </span></span><span> </span><span> <span>public function isBuzz(int $value): bool{ </span></span><span> <span>if($value % 5 === 0){ </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> <span>return false; </span></span><span> <span>} </span></span><span> </span><span> <span>public function calculateFizzBuzz(int $number): bool{ </span></span><span> <span>if($this->isFizz($number) && $this->isBuzz($number)){ </span></span><span> <span>echo "FizzBuzz \n"; </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> <span>if($this->isFizz($number)){ </span></span><span> <span>echo "Fizz \n"; </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> <span>if($this->isBuzz($number)){ </span></span><span> <span>echo "Buzz \n"; </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> <span>echo $number . "\n"; </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> </span><span> <span>public function firstNFizzbuzz(int $maxValue): void{ </span></span><span> <span>$startValue = 1; </span></span><span> </span><span> <span>while($startValue <= $maxValue){ </span></span><span> <span>$this->calculateFizzBuzz($startValue); </span></span><span> <span>$startValue++; </span></span><span> <span>} </span></span><span> <span>} </span></span><span><span>} </span></span>
Et enfin notre fichier de console.
<span><span><?php </span></span><span> </span><span><span>namespace FizzBuzz; </span></span><span> </span><span><span>use Symfony<span>\Component\Console\Command\Command</span>; </span></span><span><span>use Symfony<span>\Component\Console\Input\InputInterface</span>; </span></span><span><span>use Symfony<span>\Component\Console\Output\OutputInterface</span>; </span></span><span><span>use Symfony<span>\Component\Console\Input\InputArgument</span>; </span></span><span> </span><span><span>use FizzBuzz<span>\Fizzbuzz</span>; </span></span><span> </span><span><span>class FizzCommand extends Command{ </span></span><span> </span><span> <span>protected function configure(){ </span></span><span> <span>$this->setName("FizzBuzz:FizzBuzz") </span></span><span> <span>->setDescription("Runs Fizzbuzz") </span></span><span> <span>->addArgument('Limit', InputArgument<span>::</span>REQUIRED, 'What is the limit you wish for Fizzbuzz?'); </span></span><span> <span>} </span></span><span> </span><span> <span>protected function execute(InputInterface $input, OutputInterface $output){ </span></span><span> </span><span> <span>$fizzy = new FizzBuzz(); </span></span><span> <span>$input = $input->getArgument('Limit'); </span></span><span> </span><span> <span>$result = $fizzy->firstNFizzbuzz($input); </span></span><span> <span>} </span></span><span> </span><span><span>} </span></span>
Ici, nous créons une nouvelle application de console et enregistrons notre FizzCommand (). N'oubliez pas de rendre ce fichier exécutable.
Nous pouvons maintenant vérifier si notre commande est correctement enregistrée en exécutant la commande ./console. Nous pouvons également exécuter notre commande avec ./Console FizzBuzz: FizzBuzz 25. Cela calculera et imprimera les résultats FizzBuzz de 1 à 25.
Jusqu'à présent, nous n'avons rien fait de nouveau. Mais il existe plusieurs façons d'améliorer notre commandement. Tout d'abord, la commande n'est pas très intuitive. Comment savons-nous que nous devons passer la limite à la commande? Pour cela, la console Symfony nous offre l'assistant de question.
La question de la question fournit des fonctionnalités pour demander plus d'informations à l'utilisateur. De cette façon, nous pouvons collecter des informations de manière interactive pour l'exécution de nos commandes.
Changeons notre commande, au lieu de recevoir une limite d'exécution via l'invite d'exécution de la commande, demandez à l'utilisateur une limite. Pour cela, l'assistant de questions a une seule méthode: ASK (). Cette méthode reçoit comme arguments une interface d'entrée, une interface de sortie et une question.
Changeons le fichier fizzcommand.php pour que cela ressemble à ceci:
#!/usr/bin/env php <span><span><?php </span></span><span> </span><span><span>require_once __DIR__ . '/vendor/autoload.php'; </span></span><span> </span><span><span>use Symfony<span>\Component\Console\Application</span>; </span></span><span><span>use FizzBuzz<span>\FizzCommand</span>; </span></span><span> </span><span><span>$app = new Application(); </span></span><span><span>$app->add(new FizzCommand()); </span></span><span><span>$app->run(); </span></span>
Nous ne nous attendons plus à un argument sur la méthode configure (). Nous instancions une nouvelle question avec un défaut de 25 et l'utilisons sur la méthode ASK () dont nous avons parlé plus tôt.
Maintenant, nous avons une commande interactive qui demande une limite avant d'exécuter FizzBuzz.
L'assistance de question nous donne également des fonctionnalités pour valider les réponses. Alors utilisons-le pour vous assurer que la limite est un entier.
<span><span><?php </span></span><span> </span><span><span>namespace FizzBuzz; </span></span><span> </span><span><span>use Symfony<span>\Component\Console\Command\Command</span>; </span></span><span><span>use Symfony<span>\Component\Console\Input\InputInterface</span>; </span></span><span><span>use Symfony<span>\Component\Console\Output\OutputInterface</span>; </span></span><span><span>use Symfony<span>\Component\Console\Input\InputArgument</span>; </span></span><span><span>use Symfony<span>\Component\Console\Question\Question</span>; </span></span><span> </span><span><span>use FizzBuzz<span>\Fizzbuzz</span>; </span></span><span> </span><span><span>class FizzCommand extends Command{ </span></span><span> </span><span> <span>protected function configure(){ </span></span><span> <span>$this->setName("FizzBuzz:FizzBuzz") </span></span><span> <span>->setDescription("Runs Fizzbuzz"); </span></span><span> <span>} </span></span><span> </span><span> <span>protected function execute(InputInterface $input, OutputInterface $output){ </span></span><span> </span><span> <span>$fizzy = new FizzBuzz(); </span></span><span> </span><span> <span>$helper = $this->getHelper('question'); </span></span><span> <span>$question = new Question('Please select a limit for this execution: ', 25); </span></span><span> <span>$limit = $helper->ask($input, $output, $question); </span></span><span> </span><span> <span>$result = $fizzy->firstNFizzbuzz($limit); </span></span><span> <span>} </span></span><span><span>} </span></span>
Non seulement nous nous assurons que notre limite est un entier en utilisant la fonction setValidator (), mais nous normalisons également l'entrée au cas où l'utilisateur inserte certains espaces vides et définit également la quantité maximale de tentatives autorisées à deux.
La question de la question offre beaucoup plus de fonctionnalités, comme laisser l'utilisateur choisir parmi une liste de réponses, plusieurs réponses, cacher la réponse de l'utilisateur et l'efflexion automatique. La documentation officielle contient beaucoup plus d'informations à ce sujet.
Une autre fonction très utile fournie par le composant de la console est la possibilité d'afficher les données tabulaires.
Pour afficher un tableau, nous devons utiliser la classe de table; Réglez les en-têtes et les lignes et enfin rendez la table. Cela peut être très utile lorsqu'il s'agit de montrer des données structurées. Imaginons que nous voulons créer une commande pour afficher les conversions de certains systèmes métriques.
Ajoutons metricscommand.php à notre nouveau fichier php.
<span>protected function execute(InputInterface $input, OutputInterface $output){ </span> <span>$fizzy = new FizzBuzz(); </span> <span>$helper = $this->getHelper('question'); </span> <span>$question = new Question('Please select a limit for this execution: ', 25); </span> <span>$question->setValidator(function ($answer) { </span> <span>if (!is_numeric($answer)) { </span> <span>throw new <span>\RuntimeException</span>('The limit should be an integer.'); </span> <span>} </span> <span>return $answer; </span> <span>}); </span> <span>$question->setNormalizer(function ($value) { </span> <span>return $value ? trim($value) : ''; </span> <span>}); </span> <span>$question->setMaxAttempts(2); </span> <span>$limit = $helper->ask($input, $output, $question); </span> <span>$result = $fizzy->firstNFizzbuzz($limit); </span> <span>} </span>
et notre nouveau fichier de console:
<span>composer require symfony/console </span>
C'est une commande très simple: il rend une table avec certaines valeurs converties de pouces en centimètres. Si nous exécutons notre commande en utilisant les métriques ./Console, le résultat sera quelque chose comme ceci:
La classe de table nous offre également différents styles de séparateur pour nos tables. Vérifiez cette page si vous voulez en savoir plus. .
Bien que les questions et les tables puissent être très utiles, l'élément le plus important pourrait être la barre de progression. Les barres de progression nous donnent des commentaires sur l'exécution de la commande et nous permettent d'avoir une vue claire de la durée de la fin de la fin d'une opération.
Les barres de progression sont essentielles pour les commandes en cours d'exécution plus longue. Pour les utiliser, nous avons besoin de la barre de progression, de le transmettre un nombre total d'unités (si nous savons réellement combien d'unités nous attendons) et de le faire avancer au fur et à mesure que la commande s'exécute.
Une commande simple avec une barre de progrès peut ressembler à ceci:
<span><span><?php </span></span><span><span>declare(strict_types=1); </span></span><span> </span><span><span>namespace FizzBuzz; </span></span><span> </span><span><span>class Fizzbuzz{ </span></span><span> </span><span> <span>public function isFizz(int $value): bool{ </span></span><span> <span>if($value % 3 === 0){ </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> <span>return false; </span></span><span> <span>} </span></span><span> </span><span> <span>public function isBuzz(int $value): bool{ </span></span><span> <span>if($value % 5 === 0){ </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> <span>return false; </span></span><span> <span>} </span></span><span> </span><span> <span>public function calculateFizzBuzz(int $number): bool{ </span></span><span> <span>if($this->isFizz($number) && $this->isBuzz($number)){ </span></span><span> <span>echo "FizzBuzz \n"; </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> <span>if($this->isFizz($number)){ </span></span><span> <span>echo "Fizz \n"; </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> <span>if($this->isBuzz($number)){ </span></span><span> <span>echo "Buzz \n"; </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> <span>echo $number . "\n"; </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> </span><span> <span>public function firstNFizzbuzz(int $maxValue): void{ </span></span><span> <span>$startValue = 1; </span></span><span> </span><span> <span>while($startValue <= $maxValue){ </span></span><span> <span>$this->calculateFizzBuzz($startValue); </span></span><span> <span>$startValue++; </span></span><span> <span>} </span></span><span> <span>} </span></span><span><span>} </span></span>
et la console respective:
<span><span><?php </span></span><span> </span><span><span>namespace FizzBuzz; </span></span><span> </span><span><span>use Symfony<span>\Component\Console\Command\Command</span>; </span></span><span><span>use Symfony<span>\Component\Console\Input\InputInterface</span>; </span></span><span><span>use Symfony<span>\Component\Console\Output\OutputInterface</span>; </span></span><span><span>use Symfony<span>\Component\Console\Input\InputArgument</span>; </span></span><span> </span><span><span>use FizzBuzz<span>\Fizzbuzz</span>; </span></span><span> </span><span><span>class FizzCommand extends Command{ </span></span><span> </span><span> <span>protected function configure(){ </span></span><span> <span>$this->setName("FizzBuzz:FizzBuzz") </span></span><span> <span>->setDescription("Runs Fizzbuzz") </span></span><span> <span>->addArgument('Limit', InputArgument<span>::</span>REQUIRED, 'What is the limit you wish for Fizzbuzz?'); </span></span><span> <span>} </span></span><span> </span><span> <span>protected function execute(InputInterface $input, OutputInterface $output){ </span></span><span> </span><span> <span>$fizzy = new FizzBuzz(); </span></span><span> <span>$input = $input->getArgument('Limit'); </span></span><span> </span><span> <span>$result = $fizzy->firstNFizzbuzz($input); </span></span><span> <span>} </span></span><span> </span><span><span>} </span></span>
C'est une commande très simple. Nous configurons la barre et la boucle via une fonction Sleep (). La sortie finale ressemblera à ceci:
Plus d'informations sur les barres de progression peuvent être trouvées dans la documentation officielle.
La personnalisation des barres de progrès peut être utile pour fournir des informations supplémentaires pendant que l'utilisateur attend.
Par défaut, les informations indiquées dans la barre de progression dépend du niveau de verbosité de l'instance de sortie de l'interface de sortie. Ainsi, si nous voulons afficher différents niveaux d'informations, nous pouvons utiliser la méthode setFormat ().
#!/usr/bin/env php <span><span><?php </span></span><span> </span><span><span>require_once __DIR__ . '/vendor/autoload.php'; </span></span><span> </span><span><span>use Symfony<span>\Component\Console\Application</span>; </span></span><span><span>use FizzBuzz<span>\FizzCommand</span>; </span></span><span> </span><span><span>$app = new Application(); </span></span><span><span>$app->add(new FizzCommand()); </span></span><span><span>$app->run(); </span></span>
Les formats intégrés sont: normal, verbeux, très_verbose et débogage.
Si nous utilisons, utilisez un format normal par exemple, le résultat ressemblera à ceci:
Nous pouvons également définir notre propre format.
La barre de progrès est une chaîne composée de différents espaces réservés spécifiques. Nous pouvons combiner ces espaces réservés spécifiques pour créer nos propres barres de progrès. Les espaces réservés sont: Current, Max, Bar, pourcentage, écoulé, restant, estimé, mémoire et message. Donc, si, par exemple, nous voulions copier la même barre de progression exactement par défaut, nous pourrions utiliser ce qui suit:
<span><span><?php </span></span><span> </span><span><span>namespace FizzBuzz; </span></span><span> </span><span><span>use Symfony<span>\Component\Console\Command\Command</span>; </span></span><span><span>use Symfony<span>\Component\Console\Input\InputInterface</span>; </span></span><span><span>use Symfony<span>\Component\Console\Output\OutputInterface</span>; </span></span><span><span>use Symfony<span>\Component\Console\Input\InputArgument</span>; </span></span><span><span>use Symfony<span>\Component\Console\Question\Question</span>; </span></span><span> </span><span><span>use FizzBuzz<span>\Fizzbuzz</span>; </span></span><span> </span><span><span>class FizzCommand extends Command{ </span></span><span> </span><span> <span>protected function configure(){ </span></span><span> <span>$this->setName("FizzBuzz:FizzBuzz") </span></span><span> <span>->setDescription("Runs Fizzbuzz"); </span></span><span> <span>} </span></span><span> </span><span> <span>protected function execute(InputInterface $input, OutputInterface $output){ </span></span><span> </span><span> <span>$fizzy = new FizzBuzz(); </span></span><span> </span><span> <span>$helper = $this->getHelper('question'); </span></span><span> <span>$question = new Question('Please select a limit for this execution: ', 25); </span></span><span> <span>$limit = $helper->ask($input, $output, $question); </span></span><span> </span><span> <span>$result = $fizzy->firstNFizzbuzz($limit); </span></span><span> <span>} </span></span><span><span>} </span></span>
Il y a beaucoup plus à personnaliser les barres de progression - lisez-la ici.
Une autre fonctionnalité très utile à avoir est la possibilité d'exécuter une commande dans une commande. Par exemple, nous pourrions avoir une commande qui dépend d'une autre commande pour exécuter avec succès, ou une succession de commandes que nous pourrions vouloir exécuter dans une séquence.
Par exemple, imaginez que nous voulions créer une commande pour exécuter notre commande FizzBuzz. Nous aurions besoin de créer une nouvelle commande à l'intérieur de notre dossier / src et à l'intérieur de la méthode EXECUTE (), ont ce qui suit:
<span>composer require symfony/console </span>
Puisque notre commande FizzBuzz ne reçoit aucun argument, ce serait suffisant. Dans le cas où notre commande avait besoin d'arguments, nous devions créer un tableau d'arguments et utiliser la classe ArrayInput pour les passer.
à part cela, il s'agit d'utiliser la méthode find () avec notre nom de commande pour trouver et enregistrer notre commande.
Coloration et style La sortie peut être utile pour alerter ou informer l'utilisateur de quelque chose dans l'exécution de la commande. Pour cela, nous avons juste besoin d'ajouter les balises suivantes à notre méthode Writeln (), tout comme ce qui suit:
<span><span><?php </span></span><span><span>declare(strict_types=1); </span></span><span> </span><span><span>namespace FizzBuzz; </span></span><span> </span><span><span>class Fizzbuzz{ </span></span><span> </span><span> <span>public function isFizz(int $value): bool{ </span></span><span> <span>if($value % 3 === 0){ </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> <span>return false; </span></span><span> <span>} </span></span><span> </span><span> <span>public function isBuzz(int $value): bool{ </span></span><span> <span>if($value % 5 === 0){ </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> <span>return false; </span></span><span> <span>} </span></span><span> </span><span> <span>public function calculateFizzBuzz(int $number): bool{ </span></span><span> <span>if($this->isFizz($number) && $this->isBuzz($number)){ </span></span><span> <span>echo "FizzBuzz \n"; </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> <span>if($this->isFizz($number)){ </span></span><span> <span>echo "Fizz \n"; </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> <span>if($this->isBuzz($number)){ </span></span><span> <span>echo "Buzz \n"; </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> <span>echo $number . "\n"; </span></span><span> <span>return true; </span></span><span> <span>} </span></span><span> </span><span> <span>public function firstNFizzbuzz(int $maxValue): void{ </span></span><span> <span>$startValue = 1; </span></span><span> </span><span> <span>while($startValue <= $maxValue){ </span></span><span> <span>$this->calculateFizzBuzz($startValue); </span></span><span> <span>$startValue++; </span></span><span> <span>} </span></span><span> <span>} </span></span><span><span>} </span></span>
Il y a aussi la possibilité de définir nos propres styles à l'aide de la classe de sortie Sortie:
<span><span><?php </span></span><span> </span><span><span>namespace FizzBuzz; </span></span><span> </span><span><span>use Symfony<span>\Component\Console\Command\Command</span>; </span></span><span><span>use Symfony<span>\Component\Console\Input\InputInterface</span>; </span></span><span><span>use Symfony<span>\Component\Console\Output\OutputInterface</span>; </span></span><span><span>use Symfony<span>\Component\Console\Input\InputArgument</span>; </span></span><span> </span><span><span>use FizzBuzz<span>\Fizzbuzz</span>; </span></span><span> </span><span><span>class FizzCommand extends Command{ </span></span><span> </span><span> <span>protected function configure(){ </span></span><span> <span>$this->setName("FizzBuzz:FizzBuzz") </span></span><span> <span>->setDescription("Runs Fizzbuzz") </span></span><span> <span>->addArgument('Limit', InputArgument<span>::</span>REQUIRED, 'What is the limit you wish for Fizzbuzz?'); </span></span><span> <span>} </span></span><span> </span><span> <span>protected function execute(InputInterface $input, OutputInterface $output){ </span></span><span> </span><span> <span>$fizzy = new FizzBuzz(); </span></span><span> <span>$input = $input->getArgument('Limit'); </span></span><span> </span><span> <span>$result = $fizzy->firstNFizzbuzz($input); </span></span><span> <span>} </span></span><span> </span><span><span>} </span></span>
Plus d'informations sur le style de la sortie peuvent être trouvées ici.
Du style aux aides, nous avons vu beaucoup de fonctionnalités que la console Symfony fournit hors de la boîte. Après aujourd'hui, il n'y a absolument aucune excuse pour avoir des outils de ligne de commande mal documentés!
Quelles aides et composants de la console utilisez-vous fréquemment? Comment démarrez-vous vos outils CLI? La console Symfony est-elle suffisante pour vous, ou préférez-vous une alternative?
La console Symfony est un composant du cadre PHP Symfony qui fournit un moyen de créer des interfaces de ligne de commande (CLI). Contrairement à d'autres applications de console PHP, Symfony Console propose une approche structurée et orientée objet pour créer des applications CLI. Il fournit un ensemble de classes pour définir les commandes, gérer l'entrée et la sortie et gérer le cycle de vie de l'application. De plus, la console Symfony prend en charge la mise en forme des couleurs, les barres de progression, les tables et autres fonctionnalités de console avancée, qui ne se trouvent pas couramment dans d'autres applications de console PHP.
La création d'une commande personnalisée dans la console Symfony consiste à étendre la classe de commande et à implémenter les méthodes configure () et exécuter (). La méthode configure () est utilisée pour définir le nom, les arguments et les options de commande, tandis que la méthode Execute () contient la logique de la commande. Une fois la classe de commande créée, il peut être ajouté à l'application à l'aide de la méthode Add ().
La console Symfony fournit la InputInterface et OutputInterface pour gérer l'entrée et la sortie dans une commande. L'interface INPUT fournit des méthodes pour obtenir les arguments et les options de commande, tandis que la sortie de sortie fournit des méthodes à écrire sur la console. Vous pouvez également utiliser les classes InputArgument et InputOption pour définir les arguments et les options de commande.
Les aides dans la console Symfony sont des classes qui fournissent des fonctionnalités supplémentaires pour les commandes. Ils sont accessibles à l'aide de la méthode Gethelper () de la commande. La console Symfony comprend plusieurs aides intégrées, telles que le questionnaire pour les entrées interactives, le progrès-barhelper pour les barres de progression et le coffre-table pour les données tabulaires.
La console Symfony fournit la classe CommandSter pour tester les commandes. La classe CommandTester vous permet d'exécuter une commande avec une entrée spécifique et de capturer la sortie. Vous pouvez ensuite faire des affirmations sur la sortie pour vérifier le comportement de la commande.
Les erreurs dans la console Symfony peuvent être gérées à l'aide d'exceptions. Si une erreur se produit lors de l'exécution d'une commande, vous pouvez lancer une exception. La console Symfony attrapera l'exception et affichera un message d'erreur à l'utilisateur.
Le composant de la console Symfony est un composant autonome, Ce qui signifie qu'il peut être utilisé en dehors du cadre Symfony. Vous pouvez l'installer à l'aide de Composer et l'utiliser pour créer des applications CLI dans n'importe quel projet PHP.
La console Symfony fournit plusieurs façons de personnaliser l'apparence de la sortie de la console. Vous pouvez utiliser les codes de couleur pour modifier la couleur du texte, les codes de format pour modifier le style de texte et les balises pour créer des sections. Vous pouvez également utiliser les classes ProgressBar et Table pour créer des barres de progression et des tables.
Pour créer une application de console avec plusieurs commandes, vous pouvez Ajoutez plusieurs classes de commande à l'application. Chaque classe de commande doit étendre la classe de commande et implémenter les méthodes configure () et exécuter (). Vous pouvez ensuite utiliser la méthode ADD () de l'application pour ajouter les commandes.
Le composant de la console Symfony peut être utilisé pour automatiser pour automatiser Tâches en créant des commandes qui effectuent des tâches spécifiques et l'exécution de ces commandes à partir de la ligne de commande ou à partir d'un script. Vous pouvez également planifier des commandes pour s'exécuter à des intervalles spécifiques en utilisant un planificateur de tâches comme Cron.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!