(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': data().getTime(),įvykis:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5LHNRP9'); PHP Kūrimas. "Symfony" konsolės komponentas - Patarimai ir gudrybės - The Codest
The Codest
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Pramonės šakos
    • Fintech ir bankininkystė
    • E-commerce
    • Adtech
    • Sveikatos technologijos
    • Gamyba
    • Logistika
    • Automobiliai
    • IOT
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
Atgal rodyklė GRĮŽTI ATGAL
2022-04-14
Programinės įrangos kūrimas

PHP Kūrimas. "Symfony" konsolės komponentas - Patarimai ir gudrybės

The Codest

Sebastianas Lučakas

PHP padalinio vadovas

Šis straipsnis buvo sukurtas siekiant parodyti jums naudingiausius ir naudingiausius patarimus ir gudrybes apie "Symfony" konsolės kūrimą.

Jei esate PHP kūrėjas kuri nori atnešti jūsų PHP programinės įrangos kūrimas į aukštesnį lygį, šis straipsnis skirtas jums. Toliau nesidrovėdami pereikime prie reikalo.

Įvadas

Dažnai girdite:
​

PHP naudojamas tik žiniatinklio svetainė puslapiai

vaizdas

​
Tai visiškai netiesa, nes šiais laikais PHP kūrimas naudojama daugelyje skirtingų verslo sričių, dažnai iš pirmo žvilgsnio ne tokių trivialių.

Tiek PHP kalba ir jos aplinka puikiai palaiko HTTP ryšį, o tai kartu su CLI aplinka leidžia greitai sukurti interneto robotus, interneto naršykles arba įrankius, kurie sinchronizuoja duomenys išorinėje aplinkoje.
​
Šiam teiginiui pagrįsti turiu keletą statistinių duomenų, kurie rodo, kad konsolės komponentas "Symfony" sistema, kuri leidžia lengvai pasiekti komandinę eilutę, yra tarp TOP5 dažniausiai naudojamų ir atsisiųstų Symfony visų laikų paketai.

​
vaizdas

​

​
Šiuo metu norėtume pasidalyti keliomis gudrybėmis, kurias kiekvienas PHP kūrėjas turėtų žinoti rašydami kodas svetainėje PHP kuri turėtų veikti CLI.
​

Interaktyvi atrankos lentelė su pasirinktiniu duomenų šaltiniu

​
vaizdas
​

Lentelės atvaizdavimą su galimybe pasirinkti įrašus galima lengvai pasiekti naudojant Symfony Komanda:

// src/App/Command/TestCommand.php

    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Interaktyvios pasirinkimo lentelės pavyzdys");

        $table = $io->createTable();
        $table->setHeaderTitle("Interaktyvios atrankos lentelės pavyzdys");
        $table->setRows(iterator_to_array($this->tagsTableRows()));
        $table->render();
        $io->newLine();

        return Command::SUCCESS;
    } 

​
Pirmiau pateiktame pavyzdyje naudojame PHP generatoriai kaip duomenų šaltinį, kuris padeda mastelio keitimas ateityje. Paprastas pirmiau pateikto pavyzdžio duomenų generatorius:

    apsaugota funkcija tagsTableRows(): Generatorius
    {
        $apiTagsResponse = $this->someInjectedService->getTags();
        foreach ($apiTagsResponse as $apiTagsResponse) {
            yield [ $apiTagResponse->getName(), $apiTagResponse->getId() ];
        }
    }

Galutinis rezultatas - CLI sistemoje atvaizduota lentelė.
​
vaizdas
​

Kad jis būtų interaktyvus, turime naudoti QuestionHelper, pateiktą kaip apvalkalą aplink SymfonyStyle produkcija.

  (...)
    $choice = new ChoiceQuestion(
        klausimas: 'Kurį pasirinkimą pasirenkate?',
        pasirinkimas: array_reduce(
            array: $rows,
            callback: function($carry, $item) {
                $carry[] = $item[0];

                return $carry;
            }
        )
    );
    1TP77Atsakymas = $io->užduotiklausimą($choice);
   (...)

Todėl iš to paties šaltinio gauname interaktyvųjį pasirinkimo lauką ir lentelės rodinį.
​

Visada naudokite paslėptą užklausą neskelbtiniems naudotojo duomenims

​
vaizdas
​

Paslėpti raginimą pateikiant neskelbtinus duomenis yra įprasta praktika, kurią taip pat lengva pasiekti Symfony Konsolė.
Galite naudoti integruotą apvalkalą SymfonyStyle klasę pagal šį pavyzdį:

  (...)
    apsaugota funkcija execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Prašymas naudotojui pateikti neskelbtinus duomenis");
        $io->askHidden(
            question: "Pateikite savo API raktas čia",
            validator: function($answer) { return (42 == strlen($answer)) ?? $answer; }
        );

        return Command::SUCCESS;
    }

Pažangos juostų stilius

​
vaizdas
​

Norėdami pranešti naudotojui apie tam tikrą pažangą, galime naudoti pažangos juostas. Symfony "Console" turi puikų būdą parodyti naudotojui pažangą, tačiau visada nepamirškite tinkamai stilizuoti pažangos išvesties. Galite visiškai kontroliuoti įvairias dalis ir jų atvaizdavimo būdą naudodami Formatter. Pažangos juostos formatas - tai tik įvairių žymeklių eilutė. Galimi šie žymenys: dabartinis, max, baras, proc., praėjo, likęs, apytikriai, atmintis ir pranešimas. Pasinaudokite jais pagal toliau pateiktą pavyzdį.

(...)
 apsaugota funkcija execute(InputInterface $input, OutputInterface $output): int
 {
 $io = new SymfonyStyle($input, $output);
 $io->title("Styled progress bar example");

 $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;
 }

Galite naudoti beveik bet ką kaip formatatorių, jei tik terminalas gali jį rodyti. Oficialus Symfony dokumentacija
​

Teikite pasiūlymus konsolės komandoms

​
vaizdas
​

Esame įpratę prie konsolinių pasiūlymų, automatinio užbaigimo funkcijų ir panašių dalykų. Jei kuriate konsolinę programą, turėtumėte apsvarstyti galimybę ją pridėti, kad naudotojams nekiltų neaiškumų, kaip naudotis jūsų žemo lygio CLI sprendimu. PHP "Symfony Console" gali tai užtikrinti ir iškart, naudodama CompletionInput klasė.

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

Spausdinkite bet kur, kur norite

​
Symfony 5.1 pristatytas naujas žymeklio padėties tvarkymo CLI programose būdas. Nuo tada galima skaityti ir rašyti tam tikroje ekrano vietoje naudojant patogų Kursorius klasė:

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

vaizdas
Šis trumpas gudrybių sąrašas yra tik ledkalnio viršūnė. Galimybės "Symfony" konsolė yra begalė, kaip rodo daugybė projektų, pvz., Psalm, PHPStan ar Composer, kurie yra pagrįsti PHP ir naudojami milijonų žmonių. PHP kūrėjai visame pasaulyje.

bendradarbiavimo vėliava

Susiję straipsniai

Programinės įrangos kūrimas

Dvi priežastys, kodėl neturėtumėte naudoti PHP

Kaip PHP kūrėjas aš vis dar prisimenu PHP4 dienas, pirmąjį (neprivalomą!) GC įgyvendinimą PHP5, išgyvenau PHP7 ir...

The Codest
Sebastianas Lučakas PHP padalinio vadovas
Programinės įrangos kūrimas

Vidaus ir išorės programuotojų samdymas

Ar samdote darbuotojus iš vidaus, ar iš išorės? Tai didžiausia dilema! Sužinokite outsourcing ar vidinės komandos kūrimo privalumus šiame straipsnyje.

The Codest
Grzegorz Rozmus "Java" padalinio vadovas

Prenumeruokite mūsų žinių bazę ir būkite nuolat informuoti apie IT sektoriaus patirtį.

    Apie mus

    The Codest - tarptautinė programinės įrangos kūrimo bendrovė, turinti technologijų centrus Lenkijoje.

    Jungtinė Karalystė - būstinė

    • 303B biuras, 182-184 High Street North E6 2JA
      Londonas, Anglija

    Lenkija - vietiniai technologijų centrai

    • Fabryczna biurų parkas, Aleja
      Pokoju 18, 31-564 Krokuva
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšuva, Lenkija

    The Codest

    • Pagrindinis
    • Apie mus
    • Paslaugos
    • Case Studies
    • Sužinokite, kaip
    • Karjera
    • Žodynas

    Paslaugos

    • Patariamoji tarnyba
    • Programinės įrangos kūrimas
    • Galinės dalies kūrimas
    • Priekinės dalies kūrimas
    • Staff Augmentation
    • Atgalinės versijos kūrėjai
    • Debesų inžinieriai
    • Duomenų inžinieriai
    • Kita
    • QA inžinieriai

    Ištekliai

    • Faktai ir mitai apie bendradarbiavimą su išoriniu programinės įrangos kūrimo partneriu
    • Iš JAV į Europą: Kodėl Amerikos startuoliai nusprendžia persikelti į Europą?
    • Technikos plėtros centrų užsienyje palyginimas: Tech Offshore Europa (Lenkija), ASEAN (Filipinai), Eurazija (Turkija)
    • Kokie yra svarbiausi CTO ir CIO iššūkiai?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Autorinės teisės © 2026 The Codest. Visos teisės saugomos.

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