PHP en la consola: Lo que necesitas saber para hacer scripts

PHP es unos de los lenguajes de programación más utilizados en el mundo, el más utilizado hasta el momento en el ámbito web del lado del servidor. Para scripts CLI (línea de comandos) es más bien poco conocido, aunque cuenta con todas las posibilidades para hacerlo sus homólogos Python, Perl, Ruby y naturalmente Bash tienen una mayor popularidad. En este artículo veremos algunas características que deberías conocer si ya usas PHP en la web y quieres adentrarte en el mundo «juackeroso» de los scripts sin necesidad de aprender un nuevo lenguaje de programación.

También puedes hacer aplicaciones gráficas para escritorio con PHP-GTK y PHP-QT, pero siendo sincero no los recomiendo.

¿Qué puedo hacer con PHP desde la consola?

Todo lo que puedes hacer con PHP para la web lo puedes hacer en la consola, con algunas excepciones claro está, no deberías esperar que cosas hechas exclusivamente para la web funcionen en la consola, lo que sí puedes esperar es un mejor rendimiento, ejecutar scripts pesados en el navegador ocasionalmente los puede hacer malfuncionar y no me hables del tiempo limite de ejecución y recursos, cosas que no «molan».

Empezando con PHP para la consola

Si usas Linux y similares ya deberías tener PHP funcionando en la terminal. Para Windows debes descargarlo y como recomendación agregarlo al PATH para usarlo de forma más fácil.

Consola interactiva

Eso que tanto gusta de Python, PHP incluye una consola interactiva para escribir código directamente desde ella:

php -a
Interactive shell
php > echo 5+5;
10
php > echo 10*10;
100
php > echo "Cualquier cosa";
Cualquier cosa

También es posible ejecutar código PHP pasándolo como argumento, usando -r:

php -r "echo base64_encode('hola');"
aG9sYQ==

Útil para usarlo junto a scripts de Bash por poner un ejemplo y usar alguna que otra función que nos provee PHP.

Pasar argumentos

Se le pueden pasar argumentos a un archivo PHP, la variable $argv se encargará de almacenarlos en un array y junto a $argc se puede conocer el número de parámetros pasados al script. Es importante no enviar argumentos con un guión (-) porque PHP los usa para sus propios parámetros de consola, para estos casos se debe usar doble guión.

<!--?php echo $argc; print_r($argv); ?-->

 

php pruebas.php un argumento que pasa por aqui
7 Array
(
[0] => pruebas.php
[1] => un
[2] => argumento
[3] => que
[4] => pasa
[5] => por
[6] => aqui
)

Leer datos de entrada

Como no es posible leer datos enviados por Post o Get hay una forma de leer datos de entrada en tiempo de ejecución (diferente a los parámetros):

<!--?php echo "Escribe tu nombre: "; $nombre = trim(fgets(STDIN)); echo "Hola " .$nombre; ?-->

 

<!--?php pruebas.php<br ?-->Escribe tu nombre: Urban
Hola Urban

Colorear consola

Es habitual poner un poco de color a nuestros scripts, en PHP es posible de una forma un tanto engorrosa, se debe usar secuencias de escape para ello:

<!--?php echo "\033[31mHola\033[37m"; echo "\033[32m desde RedInfoCol\033[37m"; ?-->

color-consola-php

Utilidades

  • Podemos encontrar más cosas interesantes, por ejemplo cuando un script va creciendo y creciendo van apareciendo nuevos ficheros, PHP nos provee para ello una solución, empaquetar estos archivos en uno solo con extensión .phar.
  • Podemos crear un servidor web para ejecutar los archivos PHP sin depender de Apache o similares, simplemente usando:
    php -S localhost:puerto
  • Usando un if (defined(‘STDIN’)) podemos comprobar si el script se está ejecutando desde la consola y en caso de que no mostrarle un mensaje al usuario para que lo haga.
  • Existen librerías para añadir a nuestro PHP y sacarle un mayor provecho a la hora de crear scripts.