Shell interactif
Le CLI SAPI fournit un shell interactif lors de l'utilisation
de l'option -a si PHP a été compilé avec l'option --with-readline.
À partir de PHP 7.1.0, le shell interactif est également disponible sur Windows,
si l'extension readline est activée.
En utilisant le shell interactif, il est possible de taper du code PHP
et qu'il soit exécuté directement.
Exemple #1 Exécution de code en utilisant le shell interactif
$ 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 >
Le shell interactif fournit également une autocomplétion des fonctions,
des constantes, des noms de classes, des variables, des appels aux méthodes
statiques et des constantes de classes en utilisant la touche de tabulation.
Exemple #2 Auto-complétion en utilisant la touche de tabulation
Le fait de presser deux fois la touche de tabulation lorsqu'il y a plusieurs
complétions possibles affichera une liste de ces complétions :
php > strp[TAB][TAB]
strpbrk strpos strptime
php > strp
Lorsqu'il n'y a qu'une seule complétion possible, presser la touche de tabulation
une seule fois complétera le reste sur la même ligne :
La complétion fonctionnera aussi pour les noms qui ont été définis lors
de la session courante du shell interactif :
php > $fooThisIsAReallyLongVariableName = 42;
php > $foo[TAB]ThisIsAReallyLongVariableName
Le shell interactif stocke l'historique, auquel il est possible d'accéder en utilisant les touches
haut et bas. L'historique est sauvegardé dans le fichier ~/.php_history.
À partir de PHP 8.4.0, le chemin vers le fichier d'historique peut être défini en utilisant la
variable d'environnement PHP_HISTFILE.
Le CLI SAPI fournit 2 directives du php.ini :
cli.pager et cli.prompt.
La directive cli.pager permet la définition d'un programme
externe (comme less) à utiliser comme pager pour la sortie
au lieu d'afficher directement sur l'écran. La directive
cli.prompt autorise la modification du prompt
php >.
Il est également possible de définir des directives du php.ini
dans un shell interactif en utilisant des notations raccourcies.
Exemple #3 Définition de directives du php.ini dans un shell interactif
La définition de la directive cli.prompt :
php > #cli.prompt=hello world :>
hello world :>
En utilisant des backticks, il est possible d'exécuter du code PHP
dans le prompt :
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 >
Définition du pager à less :
php > #cli.pager=less
php > phpinfo();
(sortie affichée avec less)
php >
La directive cli.prompt supporte quelques séquences d'échappement :
Séquences d'échappement de cli.prompt
| Séquence : |
Description : |
\e |
utilisé pour ajouter des couleurs au prompt. Exemple :
\e[032m\v \e[031m\b \e[34m\> \e[0m
|
\v |
La version de PHP. |
\b |
Indique dans quel bloc de PHP nous nous trouvons.
Par exemple, /* permet d'indiquer que nous
sommes dans un commentaire multilignes. La portée externe est représentée
par php.
|
\> |
Indique le caractère utilisé pour le prompt. Par défaut, ce sera
>, mais peut être modifié lorsque le shell se
trouve dans un bloc non terminé ou dans une chaîne de caractères non terminée.
Les caractères possibles sont : ' " {
( >
|
Note:
Les fichiers inclus via auto_prepend_file et auto_append_file sont analysés
dans ce mode, mais avec quelques restrictions - par exemple, les fonctions
doivent avoir été définies avant l'appel.
Mode interactif
Antérieur à PHP 8.1.0, si l'extension readline n'était pas disponible,
invoquer le CLI SAPI avec l'option -a fournissait le mode interactif.
Dans ce mode, un script PHP complet est supposé être donné via STDIN,
et après l'interruption
avec
CTRL
+D
(POSIX) ou
CTRL
+Z
suivi de +ENTER (Windows), ce script sera évalué.
Ceci est essentiellement identique à invoquer le CLI SAPI sans l'option -a.
À partir de PHP 8.1.0, invoquer le CLI SAPI avec l'option -a
échoue si l'extension readline n'est pas disponible.