(function(w,d,s,l,i){w[l]=w[l]|||[];w[l].push({'gtm.start': new Date().getTime(),event:'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 Izstrāde. Symfony konsoles komponents - Padomi un triki - The Codest
The Codest
  • Par mums
  • Pakalpojumi
    • Programmatūras izstrāde
      • Frontend izveide
      • Backend izstrāde
    • Staff Augmentation
      • Frontend izstrādātāji
      • Backend izstrādātāji
      • Datu inženieri
      • Mākoņa inženieri
      • QA inženieri
      • Citi
    • Tā Konsultatīvais dienests
      • Audits un konsultācijas
  • Nozares
    • Fintech un banku darbība
    • E-commerce
    • Adtech
    • Healthtech
    • Ražošana
    • Loģistika
    • Automobiļu nozare
    • IOT
  • Vērtība par
    • CEO
    • CTO
    • Piegādes vadītājs
  • Mūsu komanda
  • Case Studies
  • Zināt, kā
    • Blogs
    • Tikšanās
    • Tiešsaistes semināri
    • Resursi
Karjera Sazinieties ar mums
  • Par mums
  • Pakalpojumi
    • Programmatūras izstrāde
      • Frontend izveide
      • Backend izstrāde
    • Staff Augmentation
      • Frontend izstrādātāji
      • Backend izstrādātāji
      • Datu inženieri
      • Mākoņa inženieri
      • QA inženieri
      • Citi
    • Tā Konsultatīvais dienests
      • Audits un konsultācijas
  • Vērtība par
    • CEO
    • CTO
    • Piegādes vadītājs
  • Mūsu komanda
  • Case Studies
  • Zināt, kā
    • Blogs
    • Tikšanās
    • Tiešsaistes semināri
    • Resursi
Karjera Sazinieties ar mums
Atpakaļ bultiņa ATGRIEZTIES ATPAKAĻ
2022-04-14
Programmatūras izstrāde

PHP Izstrāde. Symfony konsoles komponente - Padomi un triki

The Codest

Sebastian Luczak

PHP Vienības vadītājs

Šis raksts tika izveidots ar mērķi parādīt jums visnoderīgākos un noderīgākos padomus un trikus par Symfony Console izstrādi.

Ja esat PHP izstrādātājs kas vēlas, lai jūsu PHP programmatūras izstrāde uz nākamo līmeni, šis raksts ir domāts jums. Bez liekas ābeces pāriesim pie lietas būtības.

Ievads

Jūs bieži dzirdat:
​

PHP tiek izmantots tikai tīmekļa vietne lapas

attēls

​
Tas ir pilnīgi nepatiesi, jo mūsdienās PHP izstrāde tiek izmantots daudzās dažādās uzņēmējdarbības jomās, kas bieži vien no pirmā acu uzmetiena nav tik triviālas.

Gan PHP valoda un tās vide lieliski atbalsta HTTP saziņu, kas kopā ar CLI vides izmantošanu ļauj ātri izveidot tīmekļa robotus, tīmekļa pārlūkošanas rīkus vai rīkus, kas sinhronizē dati ārējā vidē.
​
Lai to pamatotu, man ir daži statistikas dati, kas liecina, ka konsoles komponents Symfony ietvars, kas ļauj viegli piekļūt komandrindai, ir starp TOP5 visbiežāk izmantotajiem un lejupielādētajiem. Symfony visu laiku iepakojumi.

​
attēls

​

​
Šajā brīdī mēs vēlamies dalīties ar jums ar dažiem trikiem, ko katrs PHP izstrādātājs jāzina, rakstot kods vietnē PHP kas ir paredzēts darbam CLI.
​

Interaktīva atlases tabula ar pielāgotu datu avotu

​
attēls
​

Tabulu atveidošanu ar iespēju izvēlēties ierakstus var viegli panākt, izmantojot Symfony Komanda:

// src/App/Command/TestCommand.php

    aizsargāta funkcija execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Interaktīvās atlases tabulas piemērs");

        $table = $io->createTable();
        $table->setHeaderTitle("Interaktīvās atlases tabulas piemērs");
        $table->setRows(iterator_to_array($this->tagsTableRows()));
        $table->render();
        $io->newLine();

        return Command::SUCCESS;
    } 

​
Iepriekš minētajā piemērā mēs izmantojam PHP ģeneratori kā datu avots - kas palīdz mērogojamība nākotnē. Vienkāršs datu ģenerators iepriekš minētajam piemēram:

    aizsargāta funkcija tagsTableRows(): Ģenerators
    {
        $apiTagsResponse = $this->someInjectedService->getTags();
        foreach ($apiTagsResponse as $apiTagsResponse) {
            yield [ $apiTagResponse->getName(), $apiTagResponse->getId() ];
        }
    }

Galarezultāts ir CLI atveidota tabula.
​
attēls
​

Lai to padarītu interaktīvu, mums ir jāizmanto QuestionHelper, kas ir kā ietvars ap SymfonyStyle izejas.

  (...)
    $choice = new ChoiceQuestion(
        jautājums: 'Kādu izvēli jūs izvēlaties?',
        izvēle: array_reduce(
            array: $rows,
            callback: function($carry, $item) {
                $carry[] = $item[0];

                return $carry;
            }
        )
    );
    1TP77Atbilde = $io->jautājums($choice);
   (...)

Rezultātā mēs iegūstam interaktīvu izvēles lauku ar tabulas rādījumu no viena un tā paša avota.
​

Vienmēr izmantojiet slēpto uzvedni sensitīviem lietotāja datiem

​
attēls
​

Raidījuma slēpšana, vienlaikus sniedzot sensitīvus datus, ir izplatīta prakse, un to ir viegli panākt arī ar Symfony Konsole.
Varat izmantot iebūvēto ietvaru SymfonyStyle klasi, izmantojot šādu piemēru:

  (...)
    aizsargāta funkcija execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Pieprasīt lietotājam sensitīvus datus");
        $io->askHidden(
            question: "Sniedziet savu API atslēga šeit",
            validator: function($answer) { return (42 == strlen($answer)) ??? $answer; }
        );

        return Command::SUCCESS;
    }

Progresa joslu stila izveide

​
attēls
​

Lai paziņotu lietotājam par progresu, varam izmantot progresa joslas. Symfony Konsole ir lielisks veids, kā lietotājam parādīt progresu, taču vienmēr atcerieties pareizi stilizēt progresa izvades rezultātus. Jūs varat pilnībā kontrolēt dažādas daļas un to atveidošanas veidu, izmantojot Formatētājs. Progresa joslas formāts ir tikai virkne dažādu vietrāžu. Pieejamās vietzīmes ir šādas: pašreizējais, max, bārs, procenti, pagājis, atlikušo, aplēses, atmiņa un ziņojums. Izspēlēiet tos, izmantojot tālāk sniegto piemēru.

(...)
 aizsargāta 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%%
 %elpa:6s%/%estimated:-6s% %memory:6s%');
 $progressBar->start();
 for ($i = 0; $i advance();
 usleep(420);
 }

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

 return Command::SUCCESS;
 }

Kā formatētāju varat izmantot gandrīz jebko, ja vien termināls spēj to attēlot. Oficiālais Symfony dokumentācija
​

Sniegt ieteikumus konsoles komandām

​
attēls
​

Mēs esam pieraduši pie konsoles ieteikumiem, automātiskās pabeigšanas funkcijām un tamlīdzīgām lietām. Ja veidojat konsoles lietojumprogrammu, jums jāapsver iespēja to pievienot, lai lietotāji nesaprastu, kā izmantot jūsu zema līmeņa CLI risinājumu. PHP Symfony Console var nodrošināt arī šo funkciju, izmantojot CompletionInput klase.

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

Drukāt jebkurā vēlamajā vietā

​
Symfony 5.1 ieviests jauns veids, kā CLI lietojumprogrammās apstrādāt kursora pozīciju. Kopš tā laika ir iespējams lasīt un rakstīt noteiktā ekrāna vietā, izmantojot ērto Kursors klase:

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

attēls
Šis īsais triku saraksts ir tikai aisberga virsotne. Iespējas Symfony konsole ir bezgalīgas, par ko liecina daudzie projekti, piemēram, Psalm, PHPStan vai Composer, kas balstās uz PHP un izmanto miljoniem PHP izstrādātāji visā pasaulē.

sadarbības baneris

Saistītie raksti

Programmatūras izstrāde

Divi iemesli, kāpēc nevajadzētu izmantot PHP

Kā PHP izstrādātājs es joprojām atceros PHP4 dienas, pirmo (neobligāto!) GC implementāciju PHP5, un es piedzīvoju PHP7 un...

The Codest
Sebastian Luczak PHP Vienības vadītājs
Programmatūras izstrāde

Iekšējo un ārējo izstrādātāju pieņemšana darbā

Darbinieku pieņemšana darbā iekšēji vai ārēji? Tā ir vislielākā dilemma! Šajā rakstā uzziniet outsourcing vai iekšējās komandas veidošanas priekšrocības.

The Codest
Grzegorz Rozmus Java vienības vadītājs

Abonējiet mūsu zināšanu bāzi un saņemiet jaunāko informāciju par IT nozares pieredzi.

    Par mums

    The Codest - starptautisks programmatūras izstrādes uzņēmums ar tehnoloģiju centriem Polijā.

    Apvienotā Karaliste - Galvenā mītne

    • 303B birojs, 182-184 High Street North E6 2JA
      Londona, Anglija

    Polija - Vietējie tehnoloģiju centri

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Krakova
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšava, Polija

    The Codest

    • Sākums
    • Par mums
    • Pakalpojumi
    • Case Studies
    • Zināt, kā
    • Karjera
    • Vārdnīca

    Pakalpojumi

    • Tā Konsultatīvais dienests
    • Programmatūras izstrāde
    • Backend izstrāde
    • Frontend izveide
    • Staff Augmentation
    • Backend izstrādātāji
    • Mākoņa inženieri
    • Datu inženieri
    • Citi
    • QA inženieri

    Resursi

    • Fakti un mīti par sadarbību ar ārējo programmatūras izstrādes partneri
    • No ASV uz Eiropu: Kāpēc Amerikas jaunuzņēmumi nolemj pārcelties uz Eiropu?
    • Tehnoloģiju ārzonas attīstības centru salīdzinājums: Tech Offshore Eiropa (Polija), ASEAN (Filipīnas), Eirāzija (Turcija)
    • Kādi ir galvenie CTO un CIO izaicinājumi?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Autortiesības © 2026 The Codest. Visas tiesības aizsargātas.

    lvLatvian
    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 lt_LTLithuanian is_ISIcelandic lvLatvian