Interaktiver Modus

Seit PHP 5.1.0 bietet die CLI SAPI mit der -a Option eine interaktive Shell an, wenn PHP mit der --with-readline Option kompiliert wurde. Von PHP 7.1.0 an steht die interaktive Shell auch unter Windows zu Verfügung, wenn die readline Extension aktiviert ist.

Mittels der interaktiven Shell können sie PHP code eingeben und direkt ausführen lassen.

Beispiel #1 Ausführung von Code auf der interaktiven Shell

$ php -a
Interactive shell

php > echo 5+8;
13
php > function addTwo($n)
php > {
php { return $n + 2;
php { }
php > var_dump(addtwo(2));
int(4)
php >

Die interaktive Shell bietet ebenfalls Tab-Autovervollständigung für Funktionen, Konstanten, Klassen, Variablen, statische Methoden und Klassenkonstanten.

Beispiel #2 Tab-Autovervollständigung

Zweimaliges Drücken der Tab-Taste im Falle mehrerer Möglichkeiten führt zu einer Auflistung dieser Möglichkeiten:

php > strp[TAB][TAB]
strpbrk   strpos    strptime  
php > strp

Wenn es nur eine mögliche Vervollständigung gibt, führt ein einmaliges Drücken der Tab-Taste zur Vervollständigung der Zeile:

php > strpt[TAB]ime(

Autovervollständigung funktioniert auch für Namen, welche bereits während dieser interaktiven Session definiert wurden:

php > $fooThisIsAReallyLongVariableName = 42;
php > $foo[TAB]ThisIsAReallyLongVariableName

Die interaktive Shell speichert den Verlauf von zuletzt eingegeben Zeilen. Auf diesen kann mittels der Pfeiltasten zugegriffen werden. Er wird in der ~/.php_history Datei gespeichert.

Seit PHP 5.4.0 bietet die CLI SAPI die php.ini Optionen cli.pager und cli.prompt. Die cli.pager Option erlaubt einem externen Programm (wie etwa less) als Pager für die Ausgabe zu agieren, anstatt dass diese direkt ausgegeben wird. Die cli.prompt Option erlaubt das Ändern der php > Eingabeaufforderung.

Seit PHP 5.4.0 ist es auch möglich php.ini Optionen einfacher zu ändern.

Beispiel #3 Setzen von php.ini Optionen in der interaktiven Shell

Die cli.prompt Option:

php > #cli.prompt=hello world :> 
hello world :>

Mittels Backticks kann PHP Code in dem Präfix ausgeführt werden:

php > #cli.prompt=`echo date('H:i:s');` php > 
15:49:35 php > echo 'hi';
hi
15:49:43 php > sleep(2);
15:49:45 php >

Setzen des Pagers auf less:

php > #cli.pager=less
php > phpinfo();
(output displayed in less)
php >

Die cli.prompt Option unterstützt einige Escape-Sequenzen.

cli.prompt Escape-Sequenzen
Sequenzen Beschreibung
\e Wird benutzt um Farben zur Eingabeaufforderung hinzuzufügen. Ein Beispiel: \e[032m\v \e[031m\b \e[34m\> \e[0m
\v Die PHP Version.
\b Gibt an, in welchem Block PHP sich befindet. Zum Beispiel gibt /* an, dass man sich gerade in einem mehrzeiligen Kommentar befindet. Der äußerste Block ist php.
\> Gibt das Eingabeaufforderungszeichen an. Standardmäßig ist dies >, ändert sich jedoch, wenn sich die Shell innerhalb eines nicht beendeten Blocks oder Strings befindet. Mögliche Buchstaben sind: ' " { ( >

Hinweis:

Dateien, die mit auto_prepend_file und auto_append_file eingebunden wurden, werden in diesem Modus mit einigen Einschränkungen geparset - Funktionen müssen etwa vor dem Aufruf definiert werden.

Hinweis:

Automatisches Laden (autoload) ist im interaktiven PHP CLI Modus nicht verfügbar.