window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = Fenster if (w.LeadBooster) { console.warn('LeadBooster existiert bereits') } 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 Entwicklung. Symfony Konsolen-Komponente - Tipps & Tricks - The Codest
Der Codest
  • Über uns
  • Dienstleistungen
    • Software-Entwicklung
      • Frontend-Softwareentwicklung
      • Backend-Softwareentwicklung
    • Staff Augmentation
      • Frontend-Entwickler
      • Backend-Entwickler
      • Daten-Ingenieure
      • Cloud-Ingenieure
      • QS-Ingenieure
      • Andere
    • IT-Beratung
      • Prüfung und Beratung
  • Branchen
    • Fintech & Bankwesen
    • E-commerce
    • Adtech
    • Gesundheitstechnik
    • Herstellung
    • Logistik
    • Automobilindustrie
    • IOT
  • Wert für
    • CEO
    • CTO
    • Delivery Manager
  • Unser Team
  • Fallstudien
  • Gewusst wie
    • Blog
    • Begegnungen
    • Webinare
    • Ressourcen
Karriere Kontakt aufnehmen
  • Über uns
  • Dienstleistungen
    • Software-Entwicklung
      • Frontend-Softwareentwicklung
      • Backend-Softwareentwicklung
    • Staff Augmentation
      • Frontend-Entwickler
      • Backend-Entwickler
      • Daten-Ingenieure
      • Cloud-Ingenieure
      • QS-Ingenieure
      • Andere
    • IT-Beratung
      • Prüfung und Beratung
  • Wert für
    • CEO
    • CTO
    • Delivery Manager
  • Unser Team
  • Fallstudien
  • Gewusst wie
    • Blog
    • Begegnungen
    • Webinare
    • Ressourcen
Karriere Kontakt aufnehmen
Pfeil zurück ZURÜCK
2022-04-14
Software-Entwicklung

PHP Entwicklung. Symfony Konsolen-Komponente - Tipps & Tricks

Der Codest

Sebastian Luczak

PHP Einheitsführer

Dieser Artikel wurde mit dem Ziel erstellt, Ihnen die nützlichsten und abrufbarsten Tipps und Tricks über Symfony Console Development zu zeigen.

Wenn Sie ein PHP Entwickler die Ihr Unternehmen zu einem PHP Software-Entwicklung auf die nächste Stufe zu heben, ist dieser Artikel genau das Richtige für Sie. Kommen wir ohne Umschweife zur Sache.

Einführung

Das hört man oft:
​

PHP wird nur zur Erstellung von Webseiten verwendet

Bild

​
Das ist völlig unwahr, denn heutzutage PHP Entwicklung wird in vielen verschiedenen Geschäftsbereichen eingesetzt, die auf den ersten Blick oft nicht so trivial sind.

Sowohl die PHP Sprache und ihre Umgebung unterstützen perfekt die HTTP-Kommunikation, was zusammen mit der Verwendung der CLI-Umgebung die schnelle Erstellung von Web-Bots, Web-Crawlern oder Tools ermöglicht, die Daten in externen Umgebungen synchronisieren.
​
Um dies zu untermauern, habe ich einige Statistiken, die zeigen, dass die Konsolenkomponente der Symfony-Frameworkdas einen einfachen Zugriff auf die Kommandozeile ermöglicht, gehört zu den TOP5 der meistgenutzten und heruntergeladenen Symfony Pakete aller Zeiten.

​
Bild

​

​
An dieser Stelle möchten wir Ihnen ein paar Tricks verraten, die jeder PHP Entwickler beim Schreiben wissen sollten Code in PHP die in der CLI funktionieren soll.
​

Interaktive Auswahltabelle mit benutzerdefinierter Datenquelle

​
Bild
​

Das Rendering von Tabellen mit der Möglichkeit, Einträge auszuwählen, kann auf einfache Weise erreicht werden durch Symfony Befehl:

// src/App/Befehl/TestCommand.php

    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Beispiel für eine interaktive Auswahltabelle");

        $table = $io->createTable();
        $table->setHeaderTitle("Beispiel für eine interaktive Auswahltabelle");
        $table->setRows(iterator_to_array($this->tagsTableRows()));
        $able->render();
        $io->newLine();

        return Befehl::SUCCESS;
    } 

​
Im obigen Beispiel nutzen wir die Vorteile von PHP-Generatoren als Datenquelle - das hilft bei der Skalierbarkeit in der Zukunft. Einfacher Datengenerator für obiges Beispiel:

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

Das Endergebnis ist eine in CLI gerenderte Tabelle.
​
Bild
​

Um es interaktiv zu machen, müssen wir QuestionHelper verwenden, der als Wrapper um SymfonyStil Ausgabe.

  (...)
    $choice = new ChoiceQuestion(
        question: 'Welche Auswahl treffen Sie?',
        choices: array_reduce(
            array: $rows,
            callback: function($carry, $item) {
                $carry[] = $item[0];

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

Als Ergebnis erhalten wir ein interaktives Auswahlfeld mit einer Tabellenanzeige aus derselben Quelle.
​

Verwenden Sie immer eine versteckte Eingabeaufforderung für sensible Benutzerdaten

​
Bild
​

Das Verstecken der Eingabeaufforderung bei gleichzeitiger Bereitstellung sensibler Daten ist eine gängige Praxis und kann auch in Symfony Konsole.
Sie können den eingebauten Wrapper in SymfonyStil Klasse anhand des folgenden Beispiels:

  (...)
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Abfrage des Benutzers nach sensiblen Daten");
        $io->askHidden(
            Frage: "Geben Sie hier Ihren API-Schlüssel an",
            validator: function($answer) { return (42 == strlen($answer)) ?? 1TP60Antwort; }
        );

        return Befehl::ERFOLG;
    }

Gestalten Sie Ihre Fortschrittsbalken

​
Bild
​

Um dem Benutzer einen gewissen Fortschritt zu vermitteln, können wir Fortschrittsbalken verwenden. Symfony Die Konsole bietet eine großartige Möglichkeit, dem Benutzer den Fortschritt anzuzeigen, aber denken Sie immer daran, Ihre Fortschrittsausgabe richtig zu gestalten. Sie haben volle Kontrolle über die verschiedenen Teile und wie sie gerendert werden mit Formatierer. Das Format des Fortschrittsbalkens besteht lediglich aus einer Reihe verschiedener Platzhalter. Die verfügbaren Platzhalter sind: aktuell, max, bar, Prozent, verstrichen, verbleibende, geschätzte, Speicher und Nachricht. Probieren Sie sie anhand des folgenden Beispiels aus.

(...)
 protected function execute(InputInterface $input, OutputInterface $output): int
 {
 $io = new SymfonyStyle($input, $output);
 $io->title("Beispiel für einen gestylten Fortschrittsbalken");

 $progressBar = new ProgressBar($io, 10000);
 $progressBar->setFormat('%aktuell%/%max% [r%] %Prozent:3s%%
 %elapsed:6s%/%estimated:-6s% %memory:6s%');
 $progressBar->start();
 for ($i = 0; $i advance();
 usleep(420);
 }

 $fortschrittsbalken->Ende();
 $io->neueZeile();

 return Befehl::SUCCESS;
 }

Sie können fast alles als Formatierer verwenden, solange Ihr Terminal in der Lage ist, es darzustellen. Offiziell Symfony Dokumentation
​

Vorschläge für Ihre Konsolenbefehle bereitstellen

​
Bild
​

Wir sind in unserem Entwicklungsleben an Konsolenvorschläge, Autovervollständigungsfunktionen und dergleichen gewöhnt. Wenn Sie eine Konsolenanwendung erstellen, sollten Sie dies in Betracht ziehen, damit Ihre Benutzer nicht verwirrt sind, wie sie Ihre Low-Level-CLI-Lösung verwenden sollen. PHP Die Symfony Console kann auch das bieten, und zwar standardmäßig mit FertigstellungEingabe Klasse.

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

Drucken Sie, wo immer Sie wollen

​
Symfony 5.1 wurde eine neue Art der Handhabung der Cursorposition in CLI-Anwendungen eingeführt. Seitdem ist es möglich, an einer bestimmten Stelle auf dem Bildschirm zu lesen und zu schreiben, indem man die praktische Cursor Klasse:

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

Bild
Diese kurze Liste von Tricks ist nur die Spitze des Eisbergs. Die Möglichkeiten der Symfony-Konsole sind endlos, wie die zahlreichen Projekte wie Psalm, PHPStan oder Composer zeigen, die auf PHP und von Millionen von Menschen genutzt PHP Entwickler rund um die Welt.

Kooperationsbanner

Ähnliche Artikel

Software-Entwicklung

Zwei Gründe, warum Sie PHP nicht verwenden sollten

Als PHP-Entwickler erinnere ich mich noch an die Tage von PHP4, die erste (optionale!) GC-Implementierung in PHP5, und ich erlebte den _Hype_ um die Einführung von PHP7 und...

Der Codest
Sebastian Luczak PHP Einheitsführer
Software-Entwicklung

Einstellung von internen vs. externen Entwicklern

Internes oder externes Personal einstellen? Das ist ein ultimatives Dilemma! Im folgenden Artikel erfahren Sie mehr über die Vorteile des Outsourcings oder des Aufbaus eines internen Teams.

Der Codest
Grzegorz Rozmus Leiter der Java-Abteilung

Abonnieren Sie unsere Wissensdatenbank und bleiben Sie auf dem Laufenden über das Fachwissen aus dem IT-Sektor.

    Über uns

    The Codest - Internationales Software-Unternehmen mit technischen Zentren in Polen.

    Vereinigtes Königreich - Hauptsitz

    • Büro 303B, 182-184 High Street North E6 2JA
      London, England

    Polen - Lokale Tech-Hubs

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Warszawa, Polen

      Der Codest

    • Startseite
    • Über uns
    • Dienstleistungen
    • Fallstudien
    • Gewusst wie
    • Karriere
    • Wörterbuch

      Dienstleistungen

    • IT-Beratung
    • Software-Entwicklung
    • Backend-Softwareentwicklung
    • Frontend-Softwareentwicklung
    • Staff Augmentation
    • Backend-Entwickler
    • Cloud-Ingenieure
    • Daten-Ingenieure
    • Andere
    • QS-Ingenieure

      Ressourcen

    • Fakten und Mythen über die Zusammenarbeit mit einem externen Softwareentwicklungspartner
    • Aus den USA nach Europa: Warum entscheiden sich amerikanische Start-ups für eine Verlagerung nach Europa?
    • Tech Offshore Development Hubs im Vergleich: Tech Offshore Europa (Polen), ASEAN (Philippinen), Eurasien (Türkei)
    • Was sind die größten Herausforderungen für CTOs und CIOs?
    • Der Codest
    • Der Codest
    • Der Codest
    • Privacy policy
    • Website terms of use

    Urheberrecht © 2025 von The Codest. Alle Rechte vorbehalten.

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