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 on juba olemas') } 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 arendus. Symfony konsooli komponent - näpunäited ja nipid - The Codest
The Codest
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Tööstusharud
    • Fintech & pangandus
    • E-commerce
    • Adtech
    • Healthtech
    • Tootmine
    • Logistika
    • Autotööstus
    • IOT
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
Tagasi nool TAGASI
2022-04-14
Tarkvaraarendus

PHP arendus. Symfony konsooli komponent - näpunäited ja nipid

The Codest

Sebastian Luczak

PHP Üksuse juht

See artikkel on loodud eesmärgiga näidata teile kõige kasulikumaid ja kasulikke näpunäiteid ja nippe Symfony konsooli arendamise kohta.

Kui te olete PHP arendaja mis tahab tuua teie PHP tarkvaraarendus järgmisele tasemele, on see artikkel just teile. Ilma pikema jututa läheme asja juurde.

Sissejuhatus

Sageli kuuleb:
​

PHP kasutatakse ainult veebilehtede tegemiseks.

pilt

​
See on täiesti vale, sest tänapäeval on PHP arendus kasutatakse paljudes erinevates ärivaldkondades, mis sageli ei olegi esmapilgul nii triviaalsed.

Nii PHP keel ja selle keskkond toetavad ideaalselt HTTP-suhtlust, mis koos CLI-keskkonna kasutamisega võimaldab kiiresti luua veebibootide, veebikülastajate või väliskeskkondades andmeid sünkroonivate tööriistade loomist.
​
Selle toetuseks on mul olemas mõned statistilised andmed, mis näitavad, et konsooli osa Symfony raamistik, mis võimaldab lihtsat juurdepääsu käsureale, on TOP5 enim kasutatud ja alla laaditud Symfony kõigi aegade paketid.

​
pilt

​

​
Siinkohal tahaksime jagada teiega mõned nipid, mida iga PHP arendaja peaks teadma kirjutamisel kood aadressil PHP mis peaks töötama CLI-s.
​

Interaktiivne valiktabel koos kohandatud andmeallikaga

​
pilt
​

Tabeli renderdamine koos võimalusega valida kirjeid saab hõlpsasti saavutada, kasutades Symfony Käsk:

// src/App/Command/TestCommand.php

    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Interaktiivse valiku tabeli näide");

        $table = $io->createTable();
        $table->setHeaderTitle("Interaktiivse valiku tabeli näide");
        $table->setRows(iterator_to_array($this->tagsTableRows()));
        $table->render();
        $io->newLine();

        return Command::SUCCESS;
    } 

​
Ülaltoodud näites kasutame ära PHP generaatorid andmeallikana - mis aitab tulevikus kaasa skaleeritavusele. Lihtne andmegeneraator ülaltoodud näite jaoks:

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

Lõpptulemus on CLI-s esitatud tabel.
​
pilt
​

Et see oleks interaktiivne, peame kasutama QuestionHelper'i, mis on pakutud ümbritsevana ümber SymfonyStyle väljund.

  (...)
    $choice = new ChoiceQuestion(
        küsimus: "Millise valiku te valite?",
        choices: array_reduce(
            array: $rows,
            callback: function($carry, $item) {
                $carry[] = $item[0];

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

Tulemusena saame interaktiivse valikuvälja koos tabelinäitusega samast allikast.
​

Kasutage tundlike kasutajaandmete jaoks alati varjatud juhiseid

​
pilt
​

Kiiresti varjamine, pakkudes samal ajal tundlikke andmeid, on levinud praktika ja see on ka hõlpsasti saavutatav Symfony Konsool.
Saate kasutada sisseehitatud mähist SymfonyStyle klassi järgmise näite abil:

  (...)
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Tundlike andmete küsimine kasutajalt");
        $io->askHidden(
            küsimus: "Andke oma API võti siia",
            validator: function($answer) { return (42 == strlen($answer)) ?? $answer; }
        );

        return Command::SUCCESS;
    }

Stiilige oma eduribasid

​
pilt
​

Et teatada kasutajale mõningaid edusamme, võime kasutada progressibarone. Symfony Konsoolil on suurepärane võimalus kasutajale edusammude näitamiseks, kuid ärge unustage alati oma edusammude väljundi õiget stiili. Teil on täielik kontroll erinevate osade üle ja selle üle, kuidas neid renderdatakse, kasutades Formaator. Progress bar formaat lihtsalt rida erinevaid paigutussalvestisi. Saadaval on järgmised paigutussalused: praegune, max, baar, protsent, möödunud, ülejäänud, hinnanguliselt, mälu ja sõnum. Näpistage nendega alloleva näite abil.

(...)
 protected function execute(InputInterface $input, OutputInterface $output): int
 {
 $io = new SymfonyStyle($input, $output);
 $io->title("Stiliseeritud eduriba näide");

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

Te võite kasutada peaaegu kõike, mida iganes, kui teie terminal on võimeline seda kuvama. Ametlik Symfony dokumentatsioon
​

Anda soovitusi oma konsooli käskudele

​
pilt
​

Me oleme oma arendusetapis harjunud konsooli soovituste, automaatse täitmise funktsioonide ja muu sellisega. Kui te loote konsoolirakendust, siis peaksite kaaluma selle lisamist, et teie kasutajad ei satuks segadusse, kuidas kasutada teie madalatasemelist CLI-lahendust. PHP Symfony Console suudab seda ka pakkuda, kasutades selleks CompletionInput klass.

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

Prindi kõikjal, kus soovid

​
Symfony 5.1 võttis kasutusele uue viisi kursori asukoha käsitlemiseks CLI-rakendustes. Sellest ajast alates on võimalik lugeda ja kirjutada konkreetses kohas ekraanil, kasutades mugavat Kursor klass:

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

pilt
See lühike trikkide nimekiri on vaid jäämäe tipp. Võimalused Symfony konsool on lõputud, nagu näitavad arvukad projektid nagu Psalm, PHPStan või Composer, mis põhinevad PHP ja mida kasutavad miljonid PHP arendajad üle maailma.

koostööbänner

Seotud artiklid

Tarkvaraarendus

Kaks põhjust, miks te ei peaks kasutama PHP

PHP arendajana mäletan veel PHP4 päevi, esimest (valikulist!) GC rakendamist PHP5-s, ja ma elasin läbi PHP7 tuleku _hüpe_ ja...

The Codest
Sebastian Luczak PHP Üksuse juht
Tarkvaraarendus

Sise- vs. välisarendajate palkamine

Palgata sisemiselt või väljastpoolt? See on ülim dilemma! Järgnevast artiklist saate teada outsourcing eelised või ettevõttesisese meeskonna moodustamise eelised.

The Codest
Grzegorz Rozmus Java üksuse juht

Tellige meie teadmistebaas ja jääge kursis IT-sektori eksperditeadmistega.

    Meie kohta

    The Codest - rahvusvaheline tarkvaraarendusettevõte, mille tehnoloogiakeskused asuvad Poolas.

    Ühendkuningriik - peakorter

    • Büroo 303B, 182-184 High Street North E6 2JA
      London, Inglismaa

    Poola - kohalikud tehnoloogiakeskused

    • Fabryczna büroopark, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varssavi, Poola

      The Codest

    • Kodu
    • Meie kohta
    • Teenused
    • Case Studies
    • Tea kuidas
    • Karjäärivõimalused
    • Sõnastik

      Teenused

    • See nõuandev
    • Tarkvaraarendus
    • Backend arendus
    • Frontend arendus
    • Staff Augmentation
    • Backend arendajad
    • Pilveinsenerid
    • Andmeinsenerid
    • Muud
    • QA insenerid

      Ressursid

    • Faktid ja müüdid koostööst välise tarkvaraarenduspartneriga
    • USAst Euroopasse: Miks otsustavad Ameerika idufirmad Euroopasse ümber asuda?
    • Tech Offshore arenduskeskuste võrdlus: Euroopa (Poola), ASEAN (Filipiinid), Euraasia (Türgi).
    • Millised on CTO ja CIOde peamised väljakutsed?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2025 by The Codest. Kõik õigused kaitstud.

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