(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 þróun. Symfony Console-íhlutur – ráð og brellur – The Codest
The Codest
  • Um okkur
  • Þjónusta
    • Hugbúnaðarþróun
      • Framhliðþróun
      • Bakendaþróun
    • Staff Augmentation
      • Framhliðaráþrófarar
      • Bakhliðaráþróunaraðilar
      • Gagnaverkfræðingar
      • Skýjaverkfræðingar
      • Gæðatryggingartæknimenn
      • Annað
    • Það er ráðgjafi
      • Endurskoðun og ráðgjöf
  • Iðnaðargreinar
    • Fjártæknifyrirtæki og bankastarfsemi
    • E-commerce
    • Adtech
    • Heilbrigðistækni
    • Framleiðsla
    • Flutningar
    • Bifreiða
    • Internet hlutanna
  • Gildi fyrir
    • CEO
    • CTO
    • Afhendingarstjóri
  • Teymið okkar
  • Case Studies
  • Vitið hvernig
    • Blogg
    • Fundir
    • Vefnámskeið
    • Auðlindir
Starfsferilmöguleikar Hafðu samband
  • Um okkur
  • Þjónusta
    • Hugbúnaðarþróun
      • Framhliðþróun
      • Bakendaþróun
    • Staff Augmentation
      • Framhliðaráþrófarar
      • Bakhliðaráþróunaraðilar
      • Gagnaverkfræðingar
      • Skýjaverkfræðingar
      • Gæðatryggingartæknimenn
      • Annað
    • Það er ráðgjafi
      • Endurskoðun og ráðgjöf
  • Gildi fyrir
    • CEO
    • CTO
    • Afhendingarstjóri
  • Teymið okkar
  • Case Studies
  • Vitið hvernig
    • Blogg
    • Fundir
    • Vefnámskeið
    • Auðlindir
Starfsferilmöguleikar Hafðu samband
Aftur ör Farðu aftur
2022-04-14
Hugbúnaðarþróun

PHP þróun. Symfony Console-íhlutur – ráð og brellur

The Codest

Sebastian Luczak

PHP einingarleiðtogi

Þessi grein var búin til með það að markmiði að sýna þér gagnlegustu og áhrifaríkustu ráðin og brellurnar varðandi Symfony Console-þróun.

Hér er tómt.

Ef þú ert PHP þróunaraðili sem vill færa þitt PHP hugbúnaðarþróun Ef þú vilt lyfta þessu á næsta stig, þá er þessi grein fyrir þig. Án frekari ummæla skulum við koma beint að kjarna málsins.

Inngangur

Þú heyrir oft:
​

PHP er eingöngu notað til að gera vefur síður

mynd

​
Þetta er algjörlega ósatt vegna þess að nú á dögum PHP þróun er notað í mörgum mismunandi viðskiptasviðum, oft ekki svo einfalt við fyrstu sýn.

Bæði PHP málið og umhverfi þess styðja fullkomlega HTTP-samskipti sem, ásamt notkun CLI-umhverfisins, gera það mögulegt að búa fljótt til vefvélmenni, vefskriðdýr eða verkfæri sem samstill gögn í ytri umhverfi.
​
Til að styðja þetta hef ég nokkrar tölfræði sem sýna að Console-hlutinn af Symfony-ramminn, sem gerir auðveldan aðgang að skipanalínunni, er meðal fimm mest notaðra og sóttustu Symfony pökkum allra tíma.

​
mynd

​

​
Á þessum tímapunkti viljum við deila með þér nokkrum brellum sem hver PHP þróunaraðili Ætti að vita þegar skrifað er kóði í PHP sem á að virka í CLI.
​

Emlækur valborð með sérsniðnum gagnagrunni

​
mynd
​

Búið er að gera það auðvelt að birta töflu sem gerir kleift að velja færslur úr henni með því að nota Symfony Skipun:

// src/App/Command/TestCommand.php
​
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
 $io = new SymfonyStyle($input, $output);
        $io->title("Dæmi um gagnvirkt valborð");
​
 $table = $io->createTable();
 $table->setHeaderTitle("Dæmi um gagnvirkt valborð");
        $table->setRows(iterator_to_array($this->tagsTableRows()));
 $table->render();
 $io->newLine();
​
 return Command::SUCCESS;
    } 

​
Í dæminu hér að ofan nýtum við okkur PHP rafalar sem gagnaheimild – sem hjálpar við Stigstærð í framtíðinni. Einfaldur gagnagerðartæki fyrir dæmið hér að ofan:

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

Niðurstaðan er tafla sem er birt í CLI.
​
mynd
​

Til að gera það gagnvirkt þurfum við að nota QuestionHelper, sem er veitt sem umbúð utan um Symfonystíll Úttak.

  (...)
    $choice = new ChoiceQuestion(
 question: 'Hvaða val velur þú?',
 choices: array_reduce(
 array: $rows,
 callback: function($carry, $item) {
 $carry[] = $item[0];
​
 return $carry;
 }
 )
    );
    $answer = $io->askQuestion($choice);
   (...)

Í kjölfarið fáum við gagnvirkt valreiti með töflusýningu úr sama uppruna.
​

Notaðu alltaf falinn inntak fyrir viðkvæm notendagögn.

​
mynd
​

Að fela inntakstexta á meðan viðkvæmar upplýsingar eru veittar er algeng framkvæmd og það er líka auðvelt að framkvæma í Symfony Rofi.
Þú getur notað innbyggðan umbúð í Symfonystíll flokk með eftirfarandi dæmi:

  (...)
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
 $io = new SymfonyStyle($input, $output);
        $io->title("Að biðja notanda um viðkvæm gögn");
 $io->askHidden(
 question: "Gefðu upp þitt forritaskil "lykill hér",
 validator: function($answer) { return (42 == strlen($answer)) ?? $answer; }
 );
​
 return Command::SUCCESS;
    }

Stílhrettu framvindulínur þínar

​
mynd
​

Til að miðla einhverjum framförum til notandans getum við notað framvindulínur. Symfony Console hefur frábæran hátt til að sýna framvindu fyrir notandann, en mundu alltaf að stíla framvindusýninguna þína rétt. Þú getur haft fulla stjórn á mismunandi þáttum og hvernig þeir eru birtir með því að nota Formateri. Framvindulínusniðið er bara strengur af mismunandi staðfyllingum. Hægt er að nota eftirfarandi staðfyllingar: núverandi, hámark, bar, prósenta, liðið, eftir­­­­­­­­­­­­­­­, áætlaður, minni og skilaboð. Leiktu þér með þau með dæminu hér að neðan.

(...)
 protected function execute(InputInterface $input, OutputInterface $output): int
 {
 $io = new SymfonyStyle($input, $output);
 $io->title("Dæmi um stílhreint framvinduspil");
​
 $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;
 }

Þú getur notað nánast hvað sem er sem formata, svo framarlega sem skel þín getur sýnt það. Opinbert Symfony Skjalagerð
​

Gefðu tillögur fyrir skipanir í Console Commands.

​
mynd
​

Við erum vön tillögum í konsólunni, sjálfvirkri fullkomnunareiginleikum og slíku í þróunarferlinu okkar. Ef þú ert að búa til konsólaforrit ættir þú að íhuga að bæta við slíkum eiginleikum svo notendur þínir ruglist ekki yfir því hvernig á að nota lausnina þína á lágstigs CLI. PHP Symfony Console getur einnig veitt það beint úr kassanum með því að nota Innsláttur til að ljúka flokkur.

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

Prentaðu hvar sem þú vilt

​
Symfony 5.1 Kynnti nýjan hátt til að meðhöndla bendilinn í CLI-forritum. Frá þeim tíma hefur verið hægt að lesa og skrifa á tilteknum stað á skjánum með hentugum Vísir flokkur:

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

mynd
Þessi stutta listi yfir brellur er aðeins brot af heildinni. Möguleikar á Symfony Console eru endalausir, eins og sjá má af fjölmörgum verkefnum eins og Psalm, PHPStan eða Composer sem byggja á PHP og notað af milljónum PHP forritarar um allan heim.

samstarfsfáninn

Tengdar greinar

Hugbúnaðarþróun

Tvær ástæður fyrir því að þú ættir ekki að nota PHP

Sem PHP-þróunaraðili man ég enn eftir dögum PHP4, fyrstu (valkvæðu!) GC-innleiðingunni í PHP5, og ég lifði í gegnum _hype_ um komu PHP7 og...

The Codest
Sebastian Luczak PHP einingarleiðtogi
Hugbúnaðarþróun

Að ráða innri á móti ytri forriturum

Að ráða innan fyrirtækisins eða utan? Þetta er hið algjörasta vafamál! Kynntu þér kosti outsourcing eða að byggja upp innanhúss team í eftirfarandi grein.

The Codest
Grzegorz Rozmus Java einingaleiðtogi

Gerðu þig áskrifanda að þekkingargrunni okkar og vertu upplýstur um sérfræðiþekkingu upplýsingatæknigeirans.

    Um okkur

    The Codest – Alþjóðlegt hugbúnaðarþróunarfyrirtæki með tæknimiðstöðvar í Póllandi.

    Bretland - Höfuðstöðvar

    • Skrifstofa 303B, 182-184 High Street North E6 2JA
      Lundúnir, England

    Pólland - staðbundin tæknimiðstöðvar

    • Fabryczna skrifstofugarður, Aleja
      Herbergi 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsjá, Pólland

    The Codest

    • Heim
    • Um okkur
    • Þjónusta
    • Case Studies
    • Vitið hvernig
    • Starfsferilmöguleikar
    • Orðabók

    Þjónusta

    • Það er ráðgjafi
    • Hugbúnaðarþróun
    • Bakendaþróun
    • Framhliðþróun
    • Staff Augmentation
    • Bakhliðaráþróunaraðilar
    • Skýjaverkfræðingar
    • Gagnaverkfræðingar
    • Annað
    • Gæðatryggingartæknimenn

    Auðlindir

    • Staðreyndir og goðsagnir um samstarf við utanaðkomandi hugbúnaðarþróunaraðila
    • Frá Bandaríkjunum til Evrópu: Af hverju ákveða bandarísk sprotafyrirtæki að flytja til Evrópu?
    • Samanburður á tæknifjarkerfisþróunarmiðstöðvum: Tech Offshore Europe (Pólland), ASEAN (Filippseyjar), Eurasia (Tyrkland)
    • Hvert eru helstu áskoranir CTO-a og CIO-a?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Höfundarréttur © 2026 af The Codest. Öll réttindi áskilin.

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