window.pipedriveLeadboosterConfig = { base : 'leadbooster-chat.pipedrive.com', companyId : 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version : 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster existe déjà') } else { w.LeadBooster = { q : [], on : function (n, h) { this.q.push({ t : 'o', n : n, h : h }) }, trigger : function (n) { this.q.push({ t : 't', n : n }) }, } } })() PHP Développement. Symfony Console Component - Tips & Tricks - The Codest
The Codest
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Industries
    • Fintech et banque
    • E-commerce
    • Adtech
    • Santé (Healthtech)
    • Fabrication
    • Logistique
    • Automobile
    • IOT
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
Flèche arrière RETOUR
2022-04-14
Développement de logiciels

Développement PHP. Symfony Console Component - Trucs et astuces

The Codest

Sebastian Luczak

PHP Chef d'unité

Cet article a été créé dans le but de vous présenter les trucs et astuces les plus utiles et les plus récupérables concernant le développement de la console Symfony.

Si vous êtes un PHP développeur qui souhaite apporter votre PHP développement de logiciels Cet article est fait pour vous. Sans plus attendre, entrons dans le vif du sujet.

Introduction

On l'entend souvent :
​

PHP est uniquement utilisé pour créer des pages web

image

​
C'est totalement faux, car aujourd'hui Développement PHP est utilisé dans de nombreux domaines d'activité, souvent peu banals à première vue.

Les deux PHP et son environnement supportent parfaitement la communication HTTP qui, avec l'utilisation de l'environnement CLI, permet de créer rapidement des robots web, des crawlers web ou des outils qui synchronisent des données dans des environnements externes.
​
À l'appui de cette affirmation, je dispose de quelques statistiques qui montrent que la composante "console" de la Cadre Symfonyqui permet un accès facile à la ligne de commande, est dans le TOP5 des logiciels les plus utilisés et téléchargés. Symfony de tous les temps.

​
image

​

​
A ce stade, nous aimerions partager avec vous quelques astuces que tout le monde peut utiliser. Développeur PHP à connaître lors de la rédaction code en PHP qui est censé fonctionner dans l'interface de programmation.
​

Tableau de sélection interactif avec source de données personnalisée

​
image
​

Le rendu des tableaux avec la possibilité de choisir des entrées peut être réalisé de manière simple à l'aide de Symfony Commandement :

// src/App/Command/TestCommand.php

    protected function execute(InputInterface $input, OutputInterface $output) : int
    {
        $io = new SymfonyStyle($input, $output) ;
        $io->title("Exemple de table de sélection interactive") ;

        $table = $io->createTable() ;
        $table->setHeaderTitle("Exemple de tableau de sélection interactif") ;
        $table->setRows(iterator_to_array($this->tagsTableRows())) ;
        $table->render() ;
        $io->newLine() ;

        return Commande::SUCCESS ;
    } 

​
Dans l'exemple ci-dessus, nous tirons parti de Générateurs PHP comme source de données - ce qui permet d'améliorer l'évolutivité à l'avenir. Générateur de données simple pour l'exemple ci-dessus :

    protected function tagsTableRows() : Générateur
    {
        $apiTagsResponse = $this->someInjectedService->getTags() ;
        foreach ($apiTagsResponse as $apiTagResponse) {
            yield [ $apiTagResponse->getName(), $apiTagResponse->getId() ] ;
        }
    }

Le résultat final est un tableau rendu en CLI.
​
image
​

Pour le rendre interactif, nous devons utiliser QuestionHelper, fourni comme une enveloppe autour de SymfonyStyle de la production.

  (...)
    $choice = new ChoiceQuestion(
        question : "Quelle sélection choisissez-vous ?",
        choices : array_reduce(
            array : $rows,
            callback : function($carry, $item) {
                $carry[] = $item[0] ;

                return $carry ;
            }
        )
    ) ;
    $answer = $io->askQuestion($choice) ;
   (...)

Nous obtenons ainsi un champ de choix interactif avec un affichage sous forme de tableau à partir de la même source.
​

Utilisez toujours une invite cachée pour les données sensibles de l'utilisateur

​
image
​

Masquer l'invite tout en fournissant des données sensibles est une pratique courante et facilement réalisable en Symfony Console.
Vous pouvez utiliser le wrapper intégré dans SymfonyStyle dans l'exemple suivant :

  (...)
    protected function execute(InputInterface $input, OutputInterface $output) : int
    {
        $io = new SymfonyStyle($input, $output) ;
        $io->title("Demander des données sensibles à l'utilisateur") ;
        $io->askHidden(
            question : "Fournissez votre clé API ici",
            validator : function($answer) { return (42 == strlen($answer)) ? ? $answer ; }
        ) ;

        return Command::SUCCESS ;
    }

Style des barres de progression

​
image
​

Pour communiquer des progrès à l'utilisateur, nous pouvons utiliser des barres de progression. Symfony La console est un excellent moyen de montrer la progression à l'utilisateur, mais n'oubliez pas de styliser correctement votre sortie de progression. Vous pouvez avoir un contrôle total sur les différentes parties et la façon dont elles sont rendues en utilisant Formateur. Le format de la barre de progression n'est qu'une chaîne de différents espaces réservés. Les espaces réservés disponibles sont les suivants : actuel, max, bar, pour cent, écoulé, restant, estimée, mémoire et message. Jouez avec eux à l'aide de l'exemple ci-dessous.

(...)
 protected function execute(InputInterface $input, OutputInterface $output) : int
 {
 $io = new SymfonyStyle($input, $output) ;
 $io->title("Exemple de barre de progression stylisée") ;

 $progressBar = new ProgressBar($io, 10000) ;
 $progressBar->setFormat('%current%/%max% [r%] %percent:3s%%
 %elapsed:6s%/%estimated:-6s% %memory:6s%') ;
 $progressBar->start() ;
 for ($i = 0 ; $i advance() ;
 usleep(420) ;
 }

 $progressBar->finish() ;
 $io->newLine() ;

 return Command::SUCCESS ;
 }

Vous pouvez utiliser à peu près n'importe quoi comme formateur tant que votre terminal est capable de l'afficher. Le formatage officiel Symfony la documentation
​

Fournir des suggestions pour les commandes de la console

​
image
​

Nous sommes habitués aux suggestions de la console, aux fonctions d'autocomplétion, etc. dans notre vie de développeur. Si vous créez une application console, vous devriez envisager de l'ajouter afin que vos utilisateurs ne soient pas désorientés sur la façon d'utiliser votre solution CLI de bas niveau. PHP Symfony Console peut également fournir cela, dès le départ, en utilisant la fonction Entrée d'achèvement classe.

(...)
    public function complete(CompletionInput $input, CompletionSuggestions $suggestions) : void
    {
        if ($input->mustSuggestArgumentValuesFor(argumentName : 'someArgument')) {
            $suggestions->suggestValues(['someSuggestion', 'otherSuggestion']) ;
        }
    }

Imprimez où vous voulez

​
Symfony 5.1 a introduit une nouvelle façon de gérer la position du curseur dans les applications CLI. Depuis lors, il est possible de lire et d'écrire à un endroit précis de l'écran en utilisant la fonction pratique Curseur classe :

(...)
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Cursor example");
​
        $cursor = new Cursor($io);
        $cursor->clearScreen();
        for ($x = 0; $x <= 10; $x++) {
            for ($y = 0; $y <= 10; $y++) {
                $cursor->moveToPosition($x, $y);
​
                if ($y === $x) {
                    $io->write(".");
                }
            }
        }
        $io->write("Hello, World!");
        $io->newLine();
​
        return Command::SUCCESS;
    }

image
Cette courte liste d'astuces n'est que la partie émergée de l'iceberg. Les possibilités de Console Symfony sont innombrables, comme en témoignent les nombreux projets tels que Psalm, PHPStan ou Composer qui sont basés sur les PHP et utilisés par des millions de Développeurs PHP dans le monde entier.

bannière de coopération

Articles connexes

Développement de logiciels

Deux raisons de ne pas utiliser PHP

En tant que développeur PHP, je me souviens encore de l'époque du PHP4, de la première implémentation GC (optionnelle !) dans le PHP5, et j'ai vécu la _hype_ de l'avènement du PHP7 et...

The Codest
Sebastian Luczak PHP Chef d'unité
Développement de logiciels

Embaucher des développeurs internes ou externes

Recruter en interne ou en externe ? C'est le dilemme ultime ! Découvrez les avantages de outsourcing ou de la constitution d'une équipe interne dans l'article suivant.

The Codest
Grzegorz Rozmus Chef d'unité Java

Abonnez-vous à notre base de connaissances et restez au courant de l'expertise du secteur des technologies de l'information.

    A propos de nous

    The Codest - Entreprise internationale de développement de logiciels avec des centres technologiques en Pologne.

    Royaume-Uni - Siège

    • Bureau 303B, 182-184 High Street North E6 2JA
      Londres, Angleterre

    Pologne - Les pôles technologiques locaux

    • Parc de bureaux Fabryczna, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsovie, Pologne

      The Codest

    • Accueil
    • A propos de nous
    • Services
    • Études de cas
    • Savoir comment
    • Carrières
    • Dictionnaire

      Services

    • Conseil consultatif
    • Développement de logiciels
    • Développement backend
    • Développement frontal
    • Staff Augmentation
    • Développeurs backend
    • Ingénieurs en informatique dématérialisée
    • Ingénieurs des données
    • Autres
    • Ingénieurs AQ

      Ressources

    • Faits et mythes concernant la coopération avec un partenaire externe de développement de logiciels
    • Des États-Unis à l'Europe : Pourquoi les startups américaines décident-elles de se délocaliser en Europe ?
    • Comparaison des pôles de développement Tech Offshore : Tech Offshore Europe (Pologne), ASEAN (Philippines), Eurasie (Turquie)
    • Quels sont les principaux défis des CTO et des DSI ?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Conditions d'utilisation du site web

    Copyright © 2025 par The Codest. Tous droits réservés.

    fr_FRFrench
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek fr_FRFrench