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
- Quellcode hier : StatusConsole-Klasse
Anwendungsbeispiel unter PHPStorm in der Konsole:
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
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!