window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = finestra if (w.LeadBooster) { console.warn('LeadBooster esiste già') } 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 }) }, } } })() Sviluppo PHP. Componente console di Symfony - Suggerimenti e trucchi - The Codest
The Codest
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Industrie
    • Fintech e banche
    • E-commerce
    • Adtech
    • Tecnologia della salute
    • Produzione
    • Logistica
    • Automotive
    • IOT
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
Freccia indietro TORNA INDIETRO
2022-04-14
Sviluppo di software

Sviluppo PHP. Componente console di Symfony - Suggerimenti e trucchi

The Codest

Sebastian Luczak

PHP Capo unità

Questo articolo è stato creato con l'obiettivo di mostrare i consigli e i trucchi più utili e interessanti sullo sviluppo di Symfony Console.

Se siete un PHP sviluppatore che vuole portare il vostro PHP sviluppo software al livello successivo, questo articolo è per voi. Senza ulteriori indugi, andiamo al sodo.

Introduzione

Si sente spesso dire:
​

L'PHP viene utilizzato solo per creare pagine web.

immagine

​
Questo è completamente falso, perché al giorno d'oggi Sviluppo PHP è utilizzato in molte aree aziendali diverse, spesso non così banali a prima vista.

Sia il PHP e il suo ambiente supportano perfettamente la comunicazione HTTP che, insieme all'uso dell'ambiente CLI, consente di creare rapidamente bot web, web crawler o strumenti che sincronizzano i dati in ambienti esterni.
​
A sostegno di ciò ho alcune statistiche che dimostrano che la componente Console della Quadro Symfonyche consente un facile accesso alla riga di comando, è nella TOP5 dei programmi più utilizzati e scaricati. Symfony di tutti i tempi.

​
immagine

​

​
A questo punto, vorremmo condividere con voi alcuni trucchi che ogni Sviluppatore PHP dovrebbero sapere quando si scrive codice in PHP che dovrebbe funzionare nella CLI.
​

Tabella di selezione interattiva con origine dati personalizzata

​
immagine
​

La resa delle tabelle con la possibilità di scegliere le voci può essere ottenuta in modo semplice utilizzando Symfony Comando:

// src/App/Command/TestCommand.php

    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Esempio di tabella di selezione interattiva");

        $table = $io->createTable();
        $table->setHeaderTitle("Esempio di tabella di selezione interattiva");
        $table->setRows(iterator_to_array($this->tagsTableRows());
        $table->render();
        $io->newLine();

        restituire Command::SUCCESS;
    } 

​
Nell'esempio precedente si sfrutta l'opzione Generatori PHP come fonte di dati, il che aiuta la scalabilità in futuro. Semplice generatore di dati per l'esempio precedente:

    funzione protetta tagTableRows(): Generator
    {
        $apiTagsResponse = $this->someInjectedService->getTags();
        foreach ($apiTagsResponse as $apiTagResponse) {
            yield [ $apiTagResponse->getName(), $apiTagResponse->getId() ];
        }
    }

Il risultato finale è una tabella visualizzata in CLI.
​
immagine
​

Per renderlo interattivo è necessario utilizzare QuestionHelper, fornito come wrapper attorno a SymfonyStyle uscita.

  (...)
    $choice = nuovo ChoiceQuestion(
        domanda: "Quale selezione scegli?",
        scelte: array_reduce(
            array: $rows,
            callback: function($carry, $item) {
                $carry[] = $item[0];

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

Il risultato è un campo di scelta interattivo con una tabella visualizzata dalla stessa fonte.
​

Utilizzare sempre un prompt nascosto per i dati sensibili dell'utente

​
immagine
​

Nascondere i prompt fornendo dati sensibili è una pratica comune ed è anche facilmente realizzabile in Symfony Console.
È possibile utilizzare il wrapper integrato in SymfonyStyle con il seguente esempio:

  (...)
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Richiesta di dati sensibili all'utente");
        $io->askHidden(
            domanda: "Fornisci qui la tua chiave API",
            validator: function($answer) { return (42 == strlen($answer)) ?? $answer; }
        );

        return Command::SUCCESS;
    }

Stile delle barre di avanzamento

​
immagine
​

Per comunicare all'utente alcuni progressi, possiamo utilizzare le barre di avanzamento. Symfony La console offre un ottimo modo per mostrare i progressi all'utente, ma bisogna sempre ricordarsi di stilizzare correttamente l'output dei progressi. Si può avere il pieno controllo sulle diverse parti e sul modo in cui vengono rese, utilizzando Formattatore. Il formato della barra di avanzamento è solo una stringa di segnaposto diversi. I segnaposto disponibili sono: corrente, massimo, bar, percentuale, trascorso, rimanente, stimato, memoria e messaggio. Giocate con loro con l'esempio che segue.

(...)
 protected function execute(InputInterface $input, OutputInterface $output): int
 {
 $io = new SymfonyStyle($input, $output);
 $io->title("Esempio di barra di avanzamento stilizzata");

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

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

 restituire Command::SUCCESS;
 }

Si può usare quasi tutto come formattatore, purché il terminale sia in grado di visualizzarlo. Ufficiale Symfony documentazione
​

Fornisce suggerimenti ai comandi della console

​
immagine
​

Nella nostra vita di sviluppo siamo abituati ai suggerimenti della console, alle funzioni di completamento automatico e così via. Se state creando un'applicazione per console, dovreste considerarne l'aggiunta, in modo che i vostri utenti non siano confusi su come utilizzare la vostra soluzione CLI di basso livello. PHP Symfony Console può fornire anche questo, in modo immediato, usando Ingresso di completamento classe.

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

Stampate ovunque vogliate

​
Symfony 5.1 ha introdotto un nuovo modo di gestire la posizione del cursore nelle applicazioni CLI. Da allora è possibile leggere e scrivere in un punto specifico dello schermo, utilizzando i comodi comandi Cursore 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;
    }

immagine
Questo breve elenco di trucchi è solo la punta dell'iceberg. Le possibilità di Console Symfony sono infinite, come dimostrano i numerosi progetti come Psalm, PHPStan o Composer che si basano su PHP e utilizzato da milioni di Sviluppatori PHP in tutto il mondo.

banner di cooperazione

Articoli correlati

Sviluppo di software

Due motivi per non usare PHP

Come sviluppatore PHP ricordo ancora i giorni dell'PHP4, la prima implementazione (opzionale!) del GC nell'PHP5, e ho vissuto l'_hype_ dell'avvento dell'PHP7 e...

The Codest
Sebastian Luczak PHP Capo unità
Sviluppo di software

Assumere sviluppatori interni o esterni

Assumere internamente o esternamente? È il dilemma finale! Scoprite i vantaggi di outsourcing o di creare un team interno nel seguente articolo.

The Codest
Grzegorz Rozmus Capo unità Java

Iscrivetevi alla nostra knowledge base e rimanete aggiornati sulle competenze del settore IT.

    Chi siamo

    The Codest - Società internazionale di sviluppo software con centri tecnologici in Polonia.

    Regno Unito - Sede centrale

    • Ufficio 303B, 182-184 High Street North E6 2JA
      Londra, Inghilterra

    Polonia - Poli tecnologici locali

    • Parco uffici Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Ambasciata del cervello, Konstruktorska
      11, 02-673 Varsavia, Polonia

      The Codest

    • Casa
    • Chi siamo
    • Servizi
    • Case Studies
    • Sapere come
    • Carriera
    • Dizionario

      Servizi

    • Consulenza
    • Sviluppo di software
    • Sviluppo backend
    • Sviluppo Frontend
    • Staff Augmentation
    • Sviluppatori backend
    • Ingegneri del cloud
    • Ingegneri dei dati
    • Altro
    • Ingegneri QA

      Risorse

    • Fatti e miti sulla collaborazione con un partner esterno per lo sviluppo di software
    • Dagli Stati Uniti all'Europa: Perché le startup americane decidono di trasferirsi in Europa
    • Confronto tra gli hub di sviluppo Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filippine), Eurasia (Turchia)
    • Quali sono le principali sfide di CTO e CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condizioni di utilizzo del sito web

    Copyright © 2025 di The Codest. Tutti i diritti riservati.

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