am 24. Juni 2009
Da ich zur Zeit sehr viel mit PHPUnit und anderen PHP Tools hantieren und diese sich nur über die Kommandozeile bedienen lasse, habe ich erst gemerkt, wie interessant dieses Feature doch ist. PHP ist also nicht nur gut zum erstellen von Webseiten, sondern auch dazu da Konsolenprogramme zu schreiben, die einem die täglichen Aufgaben erleichtern.
In der Vergangenheit haben wir ja bereits Tools, wie phploc, PHPUnit, pDepend oder PEAR angesprochen. All diese Helferlein sind in PHP geschrieben und lassen sich in der Kommandozeile wunderbar nutzen. Dabei gibt es kaum etwas zu beachten, denn die Unterschiede zwischen CLI und Webserver Ansteuerung sind nur marginal. Auf einen kleinen Unterschied möchte ich aber heute trotzdem eingehen. Verwende ich PHP auf dem herkömmliche Wege als Skriptsprache, angesteuert von meinem Webserver, so habe ich einen relativ geradlinigen Weg durch mein Skript. Alle User-Parameter, die das Skript beeinträchtigen können, werden bereits am Anfang des Durchlaufs gesetzt und können danach auch nicht mehr durch den User verändert werden. Anders ist es aber auf der Kommandozeile. Hier können nach dem Start des Skriptes noch vom Benutzer Parameter abgefragt werden, was eine Interaktion mit dem Anwender ermöglicht. Falls man also nicht alles über Kommandozeilen Parameter lösen will, was meiner Meinung nach nicht immer die beste Alternative ist, der kann sich ein Skript wie das folgende basteln:
<?php
$handle = fopen("php://stdin","r");
echo "Wie lautet dein Name? ";
$name = fgets($handle, 255);
echo "Hallo $name \n";
?>
Wenn man das so liest, dann wird einem schnell klar was es macht. Ist ja kein Hexenwerk so einen einfachen Stream zu verwenden. Ich denke nur, dass viele nicht wussten, dass man die Kommandozeile auch als Stream öffnen kann und somit Strings einlesen kann. Ich finde es eigentlich eine ganz schicke Geschichte, auch wenn ich es selbst leider noch nie genutzt habe.
Das Tool um PEAR Pakete zu erstellen arbeitet auf diese Art und ich kann nur sagen, dass es wirklich ein sehr komfortables Programm ist. Bei einer solchen großen Anzahl von möglichen Parametern, kann man es auch nicht mehr über die herkömmliche Weise lösen, denke ich.
Also wie gesagt, ich habe die Kommandozeile in den letzten Tagen neu für mich entdeckt und denke, dass ich noch ein paar Tipps in den nächsten Wochen parat haben werde.