Kommandozeile
PHPs Kommandozeile (engl. command line interface oder CLI) ist ein Weiterentwicklung des CGI-SAPI optimiert für die Entwicklung von PHP-Anwendungen außerhalb des Web-Kontexts.
Inhaltsverzeichnis |
Features
- Keine HTTP-Header
- Direkte Code-Ausführung
- Reflection support
- Fehlermeldungen nur Text ohne HTML-Formatierungen.
Direkte Code-Ausführung
Für das CLI-SAPI muss der auszuführende Code nicht in einer Datei vorliegen sondern kann über verschiedene Wege an den Interpreter übergeben werden. Für einzelne, kurze statements gibt es den Kommandozeilenparameter -r. Nach -r wird PHP Code erwartet, der ausgeführt werden soll, der Code benötigt dabei, wie bei eval kein öffnenden PHP-Tag.
$ php -r '$a = 0; echo ++$a;' 1
Bei der Nutzung müssen die Ersetzungsregeln der Shell berücksichtigt werden. So würde bei
$ php -r "$A = 1; echo $A;"
zunächst die Shell $A mit der entsprechenden Umgebungsvariablen ersetzen und dann das Statement an PHP übergeben. Falls $A im Environment nicht definiert ist entspricht obiges Beispiel dem Aufruf
$ php -r " = 1; echo ;"
was zu einem Parse Error führt.
Mit dem Kommandozeilenparameter -a startet PHP den interactive mode. In diesem Modus werden einzelne Statements direkt nach Eingabe verarbeitet. Ab PHP 5.1 beinhaltet dieser Modus eine interaktive Shell mit Unterstützung der typischen Readline-Funktionalitäten (History, tab-completion, etc.)
Reflection Support
Mit den Kommandozeilenparametern --rf, --rc und --re erhält man Informationen über die internen Funktionen, Klassen und die geladenen Erweiterungen.
$ php --re pcre
Extension [ <persistent> extension #23 pcre version <no_version> ] {
- Constants [7] {
Constant [ integer PREG_PATTERN_ORDER ] { }
Constant [ integer PREG_SET_ORDER ] { }
Constant [ integer PREG_OFFSET_CAPTURE ] { }
Constant [ integer PREG_SPLIT_NO_EMPTY ] { }
Constant [ integer PREG_SPLIT_DELIM_CAPTURE ] { }
Constant [ integer PREG_SPLIT_OFFSET_CAPTURE ] { }
Constant [ integer PREG_GREP_INVERT ] { }
}
- Functions {
Function [ <internal> public function preg_match ] {
- Parameters [3] {
Parameter #0 [ <required> $param0 ]
Parameter #1 [ <required> $param1 ]
Parameter #2 [ <required> &$param2 ]
}
}
Function [ <internal> public function preg_match_all ] {
- Parameters [3] {
Parameter #0 [ <required> $param0 ]
Parameter #1 [ <required> $param1 ]
Parameter #2 [ <required> &$param2 ]
}
}
Function [ <internal> public function preg_replace ] {
}
Function [ <internal> public function preg_replace_callback ] {
}
Function [ <internal> public function preg_split ] {
}
Function [ <internal> public function preg_quote ] {
}
Function [ <internal> public function preg_grep ] {
}
}
}
Links
- http://php.net/features.commandline - Dokumentation zur Kommandozeile
- http://blog.thinkphp.de/archives/44-More-PHP-power-on-the-command-line.html - Blog-Eintrag des Autors über PHPs shell mode