Consola interactiva

Desde PHP 5.1.0, SAPI CLI ofrece una consola interactiva si se usa con el modificador -a y PHP está compilado con la opción --with-readline.

Al usar la consola interactiva, se puede escribir directamente código PHP que se ejecuta al momento.

Ejemplo #1 Ejecutando código desde la consola interactiva

$ 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 >

La consola interactiva, además, proporciona autocompletado mediante el tabulador de funciones, constantes, nombres de clases, variables, llamadas a métodos estáticos y constantes de clases.

Ejemplo #2 Autocompletado con el tabulador

Al pulsar dos veces la tecla tabulador habiendo múltiples opciones de completados, se mostrará una lista con éstas:

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

Cuando sólo hay una posible opción, sólo con pulsar una vez el tabulador se completará el resto de la línea:

php > strpt[TAB]ime(

También funciona el autocompletado para nombres que se han definido durante la sesión de consola interactiva:

php > $fooEsteEsUnNombreDeVariableMuyLargo = 42;
php > $foo[TAB]EsteEsUnNombreDeVariableMuyLargo

La consola interactiva almacena tu historial, al que se puede acceder usando las teclas arriba y abajo. El historial se almacena en el fichero ~/.php_history.

Ya en PHP 5.4.0, la SAPI CLI provee las configuraciones de php.ini, cli.pager y cli.prompt. La configuración de cli.pager permite a un programa externo (tal como less) para que funcione como un paginador para la salida en lugar de se desplegado directamente en la pantalla. Las configuraciones de cli.prompt permite cambiar el indicador de ingreso de órdenes php >.

In PHP 5.4.0 también fue posible establecer las configuraciones de php.ini en la shell interactiva utilizando una notación abreviada.

Ejemplo #3 Estableciendo configuraciones de php.ini en la shell interactiva

La configuración de cli.prompt:

php > #cli.prompt=hola mundo :> 
  hola mundo :>

Usando comillas simples inclinadas es posible ejecutar código PHP en el indicador de órdenes:

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

Establecer el paginador a less:

php > #cli.pager=less
  php > phpinfo();
  (salida desplegada en less)
  php >

La configuración de cli.prompt soporta unas cuantas secuencias de escape:

Secuencias de escape de cli.prompt
Sequence: Description:
\e Utilizado para agregar colores al ingreso de órdenes. Un ejemplo podría ser \e[032m\v \e[031m\b \e[34m\> \e[0m
\v La versión de PHP.
\b Indica cual bloque de PHP está dentro. Por ejemplo /* se usa para indicar que está dentro de un comentario multilineal. El alcance externo es denotado por php.
\> Indica el caracter de ingreso de órdenes. El caracter predeterminado es >, pero cambia cuando la shell está dentro de un bloque indeterminado o una cadena. Los caracteres posibles son: ' " { ( >

Nota:

Los ficheros que se han incluido en este modo mediante auto_prepend_file y auto_append_file se analizan con algunas restricciones - p.ej. las funciones deben estar definidas antes de que se carguen.

Nota:

La auto-carga no está disponible al usar PHP en modo interactivo en CLI.