The Codest
  • O nás
  • Služby
    • Vývoj softwaru
      • Vývoj frontendů
      • Vývoj backendu
    • Staff Augmentation
      • Vývojáři frontendů
      • Vývojáři backendu
      • Datoví inženýři
      • Cloudoví inženýři
      • Inženýři QA
      • Další
    • To Advisory
      • Audit a poradenství
  • Odvětví
    • Fintech a bankovnictví
    • E-commerce
    • Adtech
    • Healthtech
    • Výroba
    • Logistika
    • Automobilový průmysl
    • IOT
  • Hodnota za
    • CEO
    • CTO
    • Manažer dodávek
  • Náš tým
  • Case Studies
  • Vědět jak
    • Blog
    • Setkání
    • Webové semináře
    • Zdroje
Kariéra Spojte se s námi
  • O nás
  • Služby
    • Vývoj softwaru
      • Vývoj frontendů
      • Vývoj backendu
    • Staff Augmentation
      • Vývojáři frontendů
      • Vývojáři backendu
      • Datoví inženýři
      • Cloudoví inženýři
      • Inženýři QA
      • Další
    • To Advisory
      • Audit a poradenství
  • Hodnota za
    • CEO
    • CTO
    • Manažer dodávek
  • Náš tým
  • Case Studies
  • Vědět jak
    • Blog
    • Setkání
    • Webové semináře
    • Zdroje
Kariéra Spojte se s námi
Šipka zpět ZPĚT
2022-04-14
Vývoj softwaru

PHP Vývoj. Komponenta Symfony Console - Tipy a triky

The Codest

Sebastian Luczak

PHP Vedoucí jednotky

Tento článek byl vytvořen s cílem ukázat vám nejužitečnější a nejpoužívanější tipy a triky o vývoji konzole Symfony.

Pokud jste PHP vývojář která chce přinést vaše PHP vývoj softwaru na vyšší úroveň, je tento článek určen právě vám. Bez dalších okolků přejděme k věci.

Úvod

Často slýcháte:
​

PHP se používá pouze k vytváření webových stránek.

obrázek

​
To je zcela nepravdivé, protože v dnešní době Vývoj PHP se používá v mnoha různých oblastech podnikání, které často nejsou na první pohled tak triviální.

Obě PHP Jazyk a jeho prostředí dokonale podporují komunikaci HTTP, což spolu s využitím prostředí CLI umožňuje rychle vytvářet webové roboty, webové crawlery nebo nástroje, které synchronizují data v externích prostředích.
​
Na podporu tohoto tvrzení mám několik statistik, které ukazují, že složka konzole Rámec Symfony, který umožňuje snadný přístup k příkazovému řádku, je v TOP5 nejpoužívanějších a nejstahovanějších aplikací. Symfony balíčky všech dob.

​
obrázek

​

​
Na tomto místě bychom se s vámi rádi podělili o několik triků, které každý Vývojář PHP by měl vědět při psaní kód na adrese PHP který by měl fungovat v CLI.
​

Interaktivní výběrová tabulka s vlastním zdrojem dat

​
obrázek
​

Vykreslování tabulek s možností výběru záznamů lze snadno dosáhnout pomocí funkce Symfony Příkaz:

// src/App/Command/TestCommand.php

    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Interaktivní příklad výběrové tabulky");

        $table = $io->createTable();
        $table->setHeaderTitle("Příklad interaktivní výběrové tabulky");
        $table->setRows(iterator_to_array($this->tagsTableRows());
        $table->render();
        $io->newLine();

        return Command::SUCCESS;
    } 

​
Ve výše uvedeném příkladu využíváme Generátory PHP jako zdroj dat - což pomáhá škálovatelnost v budoucnu. Jednoduchý generátor dat pro výše uvedený příklad:

    chráněná funkce tagsTableRows(): Generátor
    {
        $apiTagsResponse = $this->someInjectedService->getTags();
        foreach ($apiTagsResponse as $apiTagResponse) {
            yield [ $apiTagResponse->getName(), $apiTagResponse->getId() ];
        }
    }

Konečným výsledkem je tabulka vykreslená v CLI.
​
obrázek
​

Aby byl interaktivní, musíme použít nástroj QuestionHelper, který je k dispozici jako obal kolem nástroje SymfonyStyle výstup.

  (...)
    $choice = new ChoiceQuestion(
        otázka: "Který výběr si vyberete?",
        choices: array_reduce(
            array: $rows,
            callback: function($carry, $item) {
                $carry[] = $item[0];

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

Výsledkem je interaktivní pole výběru se zobrazením tabulky ze stejného zdroje.
​

Pro citlivá uživatelská data vždy používejte skrytou výzvu

​
obrázek
​

Skrytí výzvy a zároveň poskytnutí citlivých údajů je běžnou praxí a je snadno dosažitelné i v případě. Symfony Konzole.
Můžete použít vestavěný wrapper v SymfonyStyle podle následujícího příkladu:

  (...)
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Asking user for sensitive data");
        $io->askHidden(
            question: "Zde uveďte svůj klíč API",
            validator: function($answer) { return (42 == strlen($answer)) ?? $answer; }
        );

        return Command::SUCCESS;
    }

Stylování pruhů průběhu

​
obrázek
​

Abychom uživateli sdělili určitý pokrok, můžeme použít Progress Bars. Symfony Konzola nabízí skvělý způsob, jak uživateli zobrazit průběh, ale vždy nezapomeňte správně nastylovat výstup průběhu. Můžete mít plnou kontrolu nad různými částmi a způsobem jejich vykreslování pomocí funkce Formátovač. Formát ukazatele průběhu je jen řetězec různých zástupných znaků. K dispozici jsou tyto zástupné znaky: aktuální, max, bar, procenta, uplynula, zbývající, odhad, paměť a zpráva. Pohrajte si s nimi podle níže uvedeného příkladu.

(...)
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Styled progress bar example");
​
        $progressBar = new ProgressBar($io, 10000);
        $progressBar->setFormat('<comment>%current%/%max% [%bar%] %percent:3s%%</comment>
                    <info>%elapsed:6s%/%estimated:-6s%</info> <error>%memory:6s%</error>');
        $progressBar->start();
        for ($i = 0; $i < 10000; $i++) {
            $progressBar->advance();
            usleep(420);
        }
​
        $progressBar->finish();
        $io->newLine();
​
        return Command::SUCCESS;
    }

Jako formátovač můžete použít téměř cokoli, pokud to váš terminál dokáže zobrazit. Oficiální stránky Symfony dokumentace
​

Poskytování návrhů k příkazům konzoly

​
obrázek
​

Při vývoji jsme zvyklí na konzolové návrhy, funkce automatického dokončování a podobně. Pokud vytváříte konzolovou aplikaci, měli byste zvážit její přidání, aby uživatelé nebyli zmateni, jak používat vaše nízkoúrovňové řešení CLI. PHP Symfony Console to umí také, a to hned po vybalení z krabice, s použitím CompletionInput třída.

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

Tiskněte kdekoli chcete

​
Symfony 5.1 zavedl nový způsob zpracování pozice kurzoru v aplikacích CLI. Od té doby je možné číst a zapisovat na konkrétní místo na obrazovce pomocí šikovných nástrojů. Kurzor třída:

(...)
    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;
    }

obrázek
Tento krátký seznam triků je jen špičkou ledovce. Možnosti Konzola Symfony jsou nekonečné, o čemž svědčí řada projektů jako Psalm, PHPStan nebo Composer, které jsou založeny na. PHP a používají je miliony Vývojáři PHP po celém světě.

banner spolupráce

Související články

Vývoj softwaru

Dva důvody, proč byste neměli používat PHP

Jako vývojář PHP si ještě pamatuji časy PHP4, první (volitelnou!) implementaci GC v PHP5 a prožil jsem _hype_ příchodu PHP7 a...

The Codest
Sebastian Luczak PHP Vedoucí jednotky
Vývoj softwaru

Najímání interních a externích vývojářů

Najímání zaměstnanců interně nebo externě? To je zásadní dilema! V následujícím článku se dozvíte, jaké jsou výhody outsourcing nebo budování interního týmu.

The Codest
Grzegorz Rozmus Vedoucí jednotky Java

Přihlaste se k odběru naší znalostní databáze a získejte aktuální informace o odborných znalostech z oblasti IT.

    O nás

    The Codest - Mezinárodní společnost zabývající se vývojem softwaru s technologickými centry v Polsku.

    Spojené království - ústředí

    • Kancelář 303B, 182-184 High Street North E6 2JA
      Londýn, Anglie

    Polsko - Místní technologická centra

    • Kancelářský park Fabryczna, Aleja
      Pokoju 18, 31-564 Krakov
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšava, Polsko

      The Codest

    • Home
    • O nás
    • Služby
    • Case Studies
    • Vědět jak
    • Kariéra
    • Slovník

      Služby

    • To Advisory
    • Vývoj softwaru
    • Vývoj backendu
    • Vývoj frontendů
    • Staff Augmentation
    • Vývojáři backendu
    • Cloudoví inženýři
    • Datoví inženýři
    • Další
    • Inženýři QA

      Zdroje

    • Fakta a mýty o spolupráci s externím partnerem pro vývoj softwaru
    • Z USA do Evropy: Proč se americké startupy rozhodly přesídlit do Evropy?
    • Srovnání technických vývojových center v zahraničí: Tech Offshore Evropa (Polsko), ASEAN (Filipíny), Eurasie (Turecko)
    • Jaké jsou hlavní výzvy CTO a CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2026 by The Codest. Všechna práva vyhrazena.

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