Shell Interactif

Le CLISAPI fournit un shell intéractif lors de l'utilisation de l'option -a si PHP a été compilé avec l'option --with-readline. Depuis PHP 7.1.0 le shell intéractif est également disponible sur Windows, si l'extension readline est activée.

En utilisant le shell interactif, vous avez la possibilité 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 :

php > strpt[TAB]ime(

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 votre historique et peut y accéder en utilisant les touches haut et bas. L'historique est sauvegardé dans le fichier ~/.php_history.

Le CLISAPI 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 prompte 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 prompte :

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'échappements :

Séquences d'échappements de cli.prompt
Séquence :Description :
\e utilisé pour ajouter des couleurs au prompte. Exemple : \e[032m\v \e[031m\b \e[34m\> \e[0m
\vLa 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. Le scope externe est représenté par php.
\> Indique le caractère utilisé pour le prompte. Par défaut, ce sera >, mais peut être modifié lorsque le shell se trouve dans un bloc indéterminé ou dans une chaîne de caractères. 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 - i.e. les fonctions doivent avoir été définies avant l'appel.

Interactive mode

Si l'extension readline n'est pas disponible, antérieur à PHP 8.1.0, invoquer le CLISAPI avec l'option -a fournit le mode intéractif. Dans ce mode, un script PHP complet est supposé d'être donnée via STDIN, et après l'interruption avec CRTL+d (POSIX) ou CTRL+z suivi de ENTER (Windows), ce script sera évalué. Ceci est basiquement identique à invoquer le CLISAPI sans l'option -a.

À partir de PHP 8.1.0, invoquer le CLISAPI avec l'option -a échoue, si l'extension readline n'est pas disponible.

To Top