Artikel
von
© Copyright bei Patrick Froch und easy Solutions IT. Dieses Werk ist lizenziert unter Creative Commons BY-NC-SA.

Schönere Kommandos mit SymfonyStyle

Nach dem ich im Artikel "Contao 4: Konsolenbefehl erstellen (Update 05.2020)" darauf eingegangen bin, wie man eigene Kommandos erstellt, beschäftigen wir uns heute damit, wie wir diese etwas übersichtlicher gestalten können.

Normale Ausgabe

Normalerweise wird die Ausgabe über $output realisiert, wie z.B. in dieser Snippet aus dem Symfony-Handbuch zu sehen:

SymfonyStyle

Da diese Art der Ausgabe schnell unübersichtlich werden kann, schauen wir uns nun SymfonyStyle an. Ich orientiere mich am Symfony-Handbuch und fasse es hier kurze auf deutsch zusammen. Weitere Details sind hier zu finden.

Für dieses Artikel habe ich ein Konsolenkommando erstellt, in welchem ich die Ausgabe aufrufe. Es orientiert sich stark an dem Kommando aus dem oben genannten Artikel und sieht folgendermaßen aus:

In den einzelnen Beispielen, werde ich nur die Aufrufe für die Ausgabe zeigen, diese müssen dann im Beispielkommando in Zeile in Zeile 33 eingefügt werden.

(In den Beispielen muss ein <?php stehen, damit das Syntax Highlighting von GitHub funktioniert. Beim Einfügen in das Kommando, muss dies natürlich weggelassen werden.)

Basisausgaben

Titel:

Mit title() kann ein Titel ausgegeben werden.

01_title

Abschnitt:

Mit section() werden Überschriften für Abschnitte erzeugt.

02_section

Text:

text() kann entweder einen String oder ein Array von Strings übergeben werden.

03_text

Auflistung:

Mit listing() kann eine Liste erstellt werden.

04_listing

Tabelle:

Wie der Name schon vermuten lässt, gibt table() eine Tabelle aus. Die Methode nimmt als ersten Parameter ein Array mit den Spaltenüberschriften und als zweiten ein zweidimensionales Array entgegen, dass die Spalten und Zeilen enthält.

05_table

Horizontale Tabelle:

Auch horizontal ausgerichtete Tabellen sind möglich. Das Eingabeschema ist genau so wie bei der normalen Tabelle, nur dass Reihen und Spalten bei der Ausgabe vertauscht werden, da die Tabelle ja horizontal ausgegeben wird.

06_horizontal_table

Definitionsliste:

Für die übersichtliche Ausgabe von Key-Value-Beziehungen gibt es die Definitionsliste.

07_definitionList

Zeilenumbruch:

Neben der Möglichkeit einen Zeilenumbruch einzufügen (erste Listing), gibt es auch die Möglichkeit mehrere auf ein Mal einzufügen (zweite Listing).

08_newLine_01

08_newLine_02

Bemerkung:

Auch Bemerkungen dürfen nicht fehlen. Hier gibt es die Möglichkeit Strings oder Arrays von Strings zu übergeben.

09_note

Warnung:

Warnungen sind sehr ähnlich den Bemerkungen, nur auffälliger.

10_caution

Benutzerinteraktion

Frage:

Nun kommen wir zur Interaktion mit dem Benutzer. Die erste Art der Interaktion, ist die Frage. Neben der offenen Frage, bei der eine beliebige Antwort eingegeben werden kann, kann auch ein Vorgabewert festgelegt werden. Eine Validierung ist ebenfalls möglich.

11_ask

Passwortabfrage:

Die Passwortabfrage ist sehr ähnlich der Fragen, nur dass hier die Eingabe des Benutzers nicht angezeigt wird.

12_askHidden

Bestätigung:

Die Bestätigung ist eine Frage, auf die nur mit ja oder nein geantwortet werden kann. Auch hier kann festgelegt werden, was der Vorgabewert sein soll.

13_confirm

Auswahl:

Bei der Auswahl kann man zwischen vorgegebenen Antworten wählen. Auch hier kann wieder ein Wert bestimmt werden, der ausgewählt wird, wenn einfach bestätigt wird (Vorgabewert).

14_choice

Rückmeldung

Erfolg:

Bei den Rückmeldungen gibt es die Möglichkeit einen String oder ein Array von Strings zu übergeben. Im Screenshot wird nur Letzteres gezeigt. Die gilt auch für die Warnung und den Fehler (nächster und übernächster Abschnitt).

15_success

Warnung:

16_warning

Fehler:

17_error

Fazit

Mit SymfonyStyle gibt es sehr viele Gestaltungsmöglichkeiten. Damit die Übersichtlichkeit nicht verloren geht ist manchmal weniger mehr. Mitunter kann die schöne neu und bunte Konsolenwelt auch überladen wirken. Hier gilt es wie immer einen gesungen Mittelweg zu finden und sich im Vorfeld zu überlegen, wie man seine Ausgaben strukturieren will.

Zurück

Kommentare

Einen Kommentar schreiben

Bitte rechnen Sie 8 plus 2.