Konsolenanwendung in PHP - Statusberichte einzeilig animieren - StatusConsole-Klasse - für Einsteiger

in #de-stem6 years ago (edited)


DQmPiKcYtB7kqiL7JBjL6JuybPbUPxNvxTAkFarMCAP5xZK.jpg


Konsolenanwendung in PHP

Stellt Dir vor, Du arbeitest in der Backend-Entwicklung und benötigst öfter Statusausgaben auf der Kommandozeile. Was machst Du unter PHP, wenn Du mehrere Datensätze durchzählen willst und gern auch Ausnahmen anzeigen möchtest? Alles soll möglichst übersichtlich dargestellt werden.

Probleme, die sich bei großen Ausgabemengen ergeben können:

  • Der Ausgabe-Buffer reicht nicht und es werden nicht alle Daten in der Konsole dargestellt
  • In gemischten Ausgaben, sind Textstellen schlechter zu finden, da sie mitten in anderen Ausgaben liegen

Das Ziel

Ausgaben, wie Zähler oder Prozessfortschritte ( z.B. während einer Installation oder einem Download ), sollen in einer Zeile stehend und animiert angezeigt werden.

Die Lösung

Es wird jeder Ausgabetext über die gleiche Zeile geschrieben. Mit einem "carrage return", codiert in PHP als ( "\r" ), ist es möglich in den Zeilenanfang zu springen. Der Text-Vorgänger wird gelöscht. Der neue Text wird drüber geschrieben. Dem Betrachter erscheint die Anzeige wie eine Animation.

Implementierung als PHP-Klasse

Anwendungsbeispiel unter PHPStorm in der Konsole:

ezgif-5-8f04b0db62.gif

Möglichkeiten

Auf der Grundlage dieser Klasse lassen sich weitere Anwendungen aufbauen. z.B. könnte man von der Klasse StatusConsole in einer StatusBar-Klasse erben und da wiederum einen textbasierten Fortschrittsbalken oder eine %-Animation für Downloads erstellen.

Denkbar wäre z.B. auch eine Animation einer Uhrzeit oder ein Counter.
Der Phantasie sind da keine Grenzen gesetzt.

Viel Spaß damit!



#php #klassen #class #array #arrays #html #dhtml #web #webdevelopment #coding #dev #development #html5 #webdesign #codedesign #codereview #cleancode #steemit #steem #stem #de-stem #steemstem #busy #kommandozeile #shell #bash #script #mac #win #linux #terminal



rect4138.png

Sort:  

danke dafür =) hab dir mal n follow dagelassen

Danke ebenfalls! Das ist wirklich sehr aufmerksam! :)

Würdest du eventuell auch noch Beispiele nachreichen, vor allem wie es dann auch aussieht?

Das hab ich noch im Hinterkopf. Ich brauch dafür allerdings ein Screencast-Programm für Mac OSX.
Der Quellcode selbst ist allerdings verlinkt, weil er sich hier nicht sinnvoll unterbringen lässt.

So. Ist nun als Gif-Animation dabei!