CLI en PHP: ¿por qué aún no has creado tu propia herramienta de consola?
\n\nImagina que estás en la terminal, ejecutas un solo comando y en cuestión de segundos tienes un informe listo, todas las imágenes convertidas o un proyecto configurado en un nuevo servidor. Sin navegador, sin ratón, sin movimientos innecesarios. ¿Suena a magia? No, es simplemente CLI en PHP.
\n\nMuchos desarrolladores creen que PHP es solo un «lenguaje web». Pero la realidad es que PHP es una excelente herramienta para crear aplicaciones de consola. Cuenta con soporte nativo para flujos de entrada y salida, manejo sencillo de argumentos y, por supuesto, potentes librerías como Symfony Console. En este artículo, veremos cómo crear un script de consola en PHP desde cero, desde un simple echo hasta una herramienta completa con colores y barra de progreso.
\n\nSi estás cansado de hacer tareas repetitivas a mano, si quieres automatizar tu rutina y sentirte como un verdadero hacker, has llegado al lugar indicado. ¡Allá vamos!
\n\n¿Qué es una utilidad CLI y para qué sirve?
\n\nCLI (Command Line Interface) es un programa que funciona en la línea de comandos. Recibe argumentos, ejecuta acciones y muestra resultados. A diferencia de las aplicaciones web, aquí no hay HTML, CSS ni JavaScript. Solo código puro y la terminal.
\n\n¿Por qué crear CLI en PHP? Estos son algunos casos de uso:
\n\n- \n
- Migraciones de datos — transferir información de un CSV a una base de datos. \n
- Generación de informes — recopilar estadísticas y generar PDF o Excel. \n
- Automatización de despliegues — configurar un proyecto en un servidor con un solo comando. \n
- Procesamiento y análisis de archivos — conversión, compresión, renombrado. \n
- Tareas CRON — operaciones periódicas que se ejecutan según un horario. \n
Y lo mejor de todo es que el desarrollo de herramientas de consola en PHP no requiere una infraestructura compleja. Con un solo archivo y unas pocas líneas de código es suficiente.
\n\nEmpezando: el script CLI mínimo en PHP
\n\nAbre la terminal, crea un archivo hola.php y escribe:
<?php\necho "¡Hola, terminal!\\n";\n\n\nEjecútalo:
\n\nphp hola.php\n\n\nVerás:
\n\n¡Hola, terminal!\n\n¡Felicidades! Acabas de escribir tu primera utilidad CLI en PHP. Pero hagámosla más útil. Añadamos manejo de argumentos de línea de comandos.
\n\nTrabajando con argumentos: $argv y $argc
\n\nPHP proporciona dos arrays superglobales para trabajar con la consola: $argv (lista de argumentos) y $argc (número de argumentos). El primer argumento (índice 0) es el nombre del propio script.
Ejemplo:
\n\n<?php\nif ($argc < 2) {\n echo "Uso: php hola.php [nombre]\\n";\n exit(1);\n}\n\n$nombre = $argv[1];\necho "¡Hola, $nombre!\\n";\n\n\nEjecución:
\n\nphp hola.php Carlos\n\n\nResultado:
\n\n¡Hola, Carlos!\n\nYa es más interesante. Pero para proyectos serios, este enfoque no es práctico. Necesitamos argumentos con nombre, banderas, valores por defecto. Aquí es donde entra en juego la librería Symfony Console.
\n\nSymfony Console: la base sólida para CLI en PHP
\n\nSymfony Console es el estándar de facto para crear aplicaciones de consola en PHP. Con ella, puedes añadir fácilmente:
\n\n- \n
- Argumentos y opciones con nombre \n
- Salida con colores \n
- Barras de progreso \n
- Validación de entrada \n
- Autocarga de comandos \n
Instalación con Composer:
\n\ncomposer require symfony/console\n\n\nAhora crearemos una utilidad CLI en PHP completa: un generador de contraseñas.
\n\nEscribiendo un comando para generar contraseñas
\n\nEstructura del proyecto