¿Qué es un framework CLI para PHP y para qué sirve?
Un framework CLI (Command Line Interface) para PHP es una herramienta que simplifica la creación de aplicaciones y scripts de consola. En lugar de analizar manualmente los argumentos $argv y gestionar la entrada/salida, obtienes una arquitectura lista con soporte para comandos, opciones, salida de colores, barras de progreso e incluso menús interactivos.
En el desarrollo moderno con PHP, los frameworks CLI se utilizan en todas partes:
- Automatización de tareas (migraciones de BD, caché, despliegue)
- Generación de código (scaffolding)
- Scripts CRON y procesadores en segundo plano
- Herramientas DevOps y CI/CD
Veamos las cinco soluciones más populares que puedes usar en pythonlib.ru.
1. Symfony Console — el estándar de la industria
Symfony Console es el framework CLI para PHP más maduro y popular. Se utiliza en Laravel Artisan, Doctrine, Composer y cientos de otros proyectos.
Instalación
composer require symfony/consoleEjemplo: aplicación simple "Hola Mundo"
// hello.phprequire __DIR__ . '/vendor/autoload.php';
use Symfony\\Component\\Console\\Application;use Symfony\\Component\\Console\\Command\\Command;use Symfony\\Component\\Console\\Input\\InputInterface;use Symfony\\Component\\Console\\Output\\OutputInterface;
class HelloCommand extends Command{ protected static $defaultName = 'app:hello';
protected function configure(): void { $this->setDescription('Saludo al usuario'); }
protected function execute(InputInterface $input, OutputInterface $output): int { $output->writeln('<info>¡Hola, mundo!</info>'); return Command::SUCCESS; }}
$application = new Application();$application->add(new HelloCommand());$application->run();Características clave
- Generación automática de ayuda (
--help) - Soporte para opciones y argumentos con validación
- Salida de colores mediante estilos (info, error, comment)
- Barras de progreso, tablas, preguntas
- Pruebas de comandos a través de
CommandTester
2. Laravel Zero — micro-framework basado en Laravel
Laravel Zero es una versión ligera de Laravel, optimizada para CLI. Es ideal si estás acostumbrado al ecosistema de Laravel pero no quieres arrastrar todo el framework.
Instalación
composer create-project laravel-zero/laravel-zero my-cli-appEjemplo: comando con argumentos
// app/Commands/GreetCommand.phpnamespace App\\Commands;
use LaravelZero\\Framework\\Commands\\Command;
class GreetCommand extends Command{ protected $signature = 'greet {name : Nombre del usuario} {--yell : ¿Gritar?}'; protected $description = 'Saludo con nombre';
public function handle(): int { $name = $this->argument('name'); $message = "¡Hola, $name!"; if ($this->option('yell')) { $message = strtoupper($message); } $this->info($message); return self::SUCCESS; }}¿Qué incluye?
- Eloquent ORM (opcional)
- Comandos estilo Artisan
- Soporte para colas y tareas
- Migraciones y seeding para BD
- Compilación integrada en archivo PHAR
3. Minicli — minimalista y rápido
Minicli es un framework CLI ligero sin dependencias. Pesa menos de 100 KB y es perfecto para microservicios y utilidades simples.
Instalación
composer require minicli/minicliEjemplo: encuesta interactiva
// app.phprequire __DIR__ . '/vendor/autoload.ph También en la biblioteca
Biblioteca WebSocket de Kotlin: ktor-client-websockets para tiempo real
Internacionalización (i18n) en Go (Golang): biblioteca go-i18n