Flux I/O
Serveur web interne
Utilisation des lignes de commande
PHP Manual

## Shell Interactif

Depuis PHP 5.1.0, le CLI SAPI fournit un shell intéractif lors de l'utilisation de l'option -a si PHP a été compilé avec l'option --with-readline .

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 auto-complé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 seul 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.

Depuis PHP 5.4.0, le CLI SAPI fournit 2 nouvelles 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 >.

En PHP 5.4.0, 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
\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 multi-lignes. 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.

> Note:

> L'autoloading n'est pas disponible si vous utilisez PHP en mode CLI interactif.

Flux I/O
Serveur web interne
Utilisation des lignes de commande
PHP Manual