window.pipedriveLeadboosterConfig = { base: pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on jo olemassa') } 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 Kehitys. Symfony-konsolikomponentti - Vinkkejä ja niksejä - The Codest
Codest
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Toimialat
    • Fintech & pankkitoiminta
    • E-commerce
    • Adtech
    • Terveysteknologia
    • Valmistus
    • Logistiikka
    • Autoteollisuus
    • IOT
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
Takaisin nuoli PALAA TAAKSE
2022-04-14
Ohjelmistokehitys

PHP Kehitys. Symfony Console Component - Vinkkejä ja niksejä

Codest

Sebastian Luczak

PHP Yksikön johtaja

Tämä artikkeli on luotu tarkoituksena näyttää sinulle hyödyllisimmät ja hyödyllisimmät vinkit ja niksit Symfony-konsolin kehitykseen liittyen.

Jos olet PHP kehittäjä joka haluaa tuoda PHP ohjelmistokehitys seuraavalle tasolle, tämä artikkeli on sinua varten. Pidemmittä puheitta mennään asiaan.

Johdanto

Usein kuulee:
​

PHP:tä käytetään vain verkkosivujen tekemiseen.

kuva

​
Tämä ei pidä paikkaansa, koska nykyään - PHP-kehitys käytetään monilla eri liiketoiminta-alueilla, jotka eivät useinkaan ole ensi näkemältä niin triviaaleja.

Sekä PHP kieli ja sen ympäristö tukevat täydellisesti HTTP-viestintää, mikä yhdessä CLI-ympäristön käytön kanssa mahdollistaa nopean webbottien, web-matkailijoiden tai työkalujen luomisen, jotka synkronoivat tietoja ulkoisissa ympäristöissä.
​
Tämän tueksi minulla on joitakin tilastoja, jotka osoittavat, että konsolikomponentti konsolin Symfony-kehys, joka mahdollistaa helpon pääsyn komentoriville, on TOP5 käytetyimpien ja ladatuimpien komentorivien joukossa. Symfony kaikkien aikojen paketteja.

​
kuva

​

​
Tässä vaiheessa haluaisimme jakaa kanssasi muutamia niksejä, joita jokainen PHP-kehittäjä pitäisi tietää kirjoittaessaan koodi osoitteessa PHP jonka pitäisi toimia CLI:ssä.
​

Interaktiivinen valintataulukko mukautetulla tietolähteellä

​
kuva
​

Taulukon renderöinti, josta voi valita merkintöjä, voidaan toteuttaa helposti käyttämällä seuraavaa toimintoa Symfony Komento:

// src/App/Command/TestCommand.php

    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Esimerkki interaktiivisesta valintataulukosta");

        $table = $io->createTable();
        $table->setHeaderTitle("Esimerkki interaktiivisesta valintataulukosta");
        $table->setRows(iterator_to_array($this->tagsTableRows()));
        $table->render();
        $io->newLine();

        return Command::SUCCESS;
    } 

​
Yllä olevassa esimerkissä hyödynnämme PHP Generaattorit tietolähteenä - mikä auttaa skaalautuvuudessa tulevaisuudessa. Yksinkertainen datageneraattori edellä mainittua esimerkkiä varten:

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

Lopputuloksena on CLI:ssä esitetty taulukko.
​
kuva
​

Jotta siitä tulisi vuorovaikutteinen, meidän on käytettävä QuestionHelperiä, joka tarjotaan kääreenä ympäröivän SymfonyStyle tuotos.

  (...)
    $choice = new ChoiceQuestion(
        kysymys: "Minkä valinnan valitset?",
        choices: array_reduce(
            array: $rows,
            callback: function($carry, $item) {
                $carry[] = $item[0];

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

Tuloksena saamme interaktiivisen valintakentän ja taulukkonäytön samasta lähteestä.
​

Käytä aina piilotettua kehotetta arkaluonteisille käyttäjätiedoille

​
kuva
​

Kehotteiden piilottaminen ja samalla arkaluonteisten tietojen antaminen on yleinen käytäntö, ja se on myös helposti toteutettavissa seuraavissa tapauksissa Symfony Konsoli.
Voit käyttää sisäänrakennettua kääreen SymfonyStyle luokkaa seuraavan esimerkin avulla:

  (...)
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Arkaluonteisten tietojen pyytäminen käyttäjältä");
        $io->askHidden(
            question: "Anna API-avaimesi tässä",
            validator: function($answer) { return (42 == strlen($answer)) ?? $answer; }
        );

        return Command::SUCCESS;
    }

Edistymispalkkien tyyli

​
kuva
​

Käyttäjälle voidaan kertoa edistymisestä käyttämällä edistymispalkkeja. Symfony Konsoli on loistava tapa näyttää edistyminen käyttäjälle, mutta muista aina tyylitellä edistymisulosteet oikein. Voit hallita täysin eri osia ja niiden esittämistapaa käyttämällä seuraavia tapoja Muotoilija. Edistymispalkin muoto on vain merkkijono erilaisia sijoitussalpaajia. Käytettävissä olevat sijoittimet ovat: nykyinen, max, baari, prosenttia, kulunut, jäljelle jäävä, arvioitu, muisti ja viesti. Kokeile niitä alla olevan esimerkin avulla.

(...)
 protected function execute(InputInterface $input, OutputInterface $output): int
 {
 $io = new SymfonyStyle($input, $output);
 $io->title("Tyylitelty edistymispalkki esimerkki");

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

Voit käyttää muotoilijana melkein mitä tahansa, kunhan päätelaitteesi pystyy näyttämään sen. Virallinen Symfony dokumentaatio
​

Anna ehdotuksia konsolikomennoille

​
kuva
​

Olemme tottuneet konsoli-ehdotuksiin, automaattisiin täydennysominaisuuksiin ja vastaaviin kehitystyössämme. Jos luot konsolisovellusta, sinun pitäisi harkita sen lisäämistä, jotta käyttäjät eivät joutuisi hämmennyksiin siitä, miten käyttää matalan tason CLI-ratkaisuasi. PHP Symfony Console voi tarjota myös sen, suoraan laatikosta, käyttämällä CompletionInput luokka.

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

Tulosta minne haluat

​
Symfony 5.1 esitteli uuden tavan käsitellä kursorin sijaintia CLI-sovelluksissa. Siitä lähtien on ollut mahdollista lukea ja kirjoittaa tietyssä paikassa näytöllä käyttämällä kätevää Kursori luokka:

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

kuva
Tämä lyhyt luettelo tempuista on vain jäävuoren huippu. Mahdollisuudet Symfony-konsoli ovat loputtomia, kuten lukuisat projektit, kuten Psalm, PHPStan tai Composer, jotka pohjautuvat Psalmiin. PHP ja jota käyttävät miljoonat PHP-kehittäjät ympäri maailmaa.

yhteistyöbanneri

Aiheeseen liittyvät artikkelit

Ohjelmistokehitys

Kaksi syytä, miksi sinun ei pitäisi käyttää PHP:tä.

PHP-kehittäjänä muistan yhä PHP4:n päivät, ensimmäisen (valinnaisen!) GC-toteutuksen PHP5:ssä, ja elin PHP7:n ja PHP7:n tulon _hype_:n läpi....

Codest
Sebastian Luczak PHP Yksikön johtaja
Ohjelmistokehitys

Sisäisten vs. ulkoisten kehittäjien palkkaaminen

Palkkaaminen sisäisesti vai ulkoisesti? Se on äärimmäinen dilemma! Lue seuraavasta artikkelista, mitä etuja on ulkoistamisen tai sisäisen tiimin rakentamisen välillä.

Codest
Grzegorz Rozmus Java-yksikön johtaja

Tilaa tietopankkimme ja pysy ajan tasalla IT-alan asiantuntemuksesta.

    Tietoa meistä

    The Codest - Kansainvälinen ohjelmistokehitysyritys, jolla on teknologiakeskuksia Puolassa.

    Yhdistynyt kuningaskunta - pääkonttori

    • Toimisto 303B, 182-184 High Street North E6 2JA
      Lontoo, Englanti

    Puola - Paikalliset teknologiakeskukset

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Krakova
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsova, Puola

      Codest

    • Etusivu
    • Tietoa meistä
    • Palvelut
    • Tapaustutkimukset
    • Tiedä miten
    • Työurat
    • Sanakirja

      Palvelut

    • Se neuvoa-antava
    • Ohjelmistokehitys
    • Backend-kehitys
    • Frontend-kehitys
    • Staff Augmentation
    • Backend-kehittäjät
    • Pilvi-insinöörit
    • Tietoinsinöörit
    • Muut
    • QA insinöörit

      Resurssit

    • Faktoja ja myyttejä yhteistyöstä ulkoisen ohjelmistokehityskumppanin kanssa
    • Yhdysvalloista Eurooppaan: Miksi amerikkalaiset startup-yritykset päättävät muuttaa Eurooppaan?
    • Tech Offshore -kehityskeskusten vertailu: Tech Offshore Eurooppa (Puola), ASEAN (Filippiinit), Euraasia (Turkki).
    • Mitkä ovat teknologiajohtajien ja tietohallintojohtajien tärkeimmät haasteet?
    • Codest
    • Codest
    • Codest
    • Privacy policy
    • Verkkosivuston käyttöehdot

    Tekijänoikeus © 2025 by The Codest. Kaikki oikeudet pidätetään.

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