Nuevo en Symfony 5.1: Aplicaciones de consola de un solo comando
El componente Console es el segundo componente más popular de Symfony, con cerca de 200 millones de descargas. De hecho, es tan popular que muchos programadores/as lo utilizan para crear todos sus comandos, evitando el uso de soluciones más tradicionales basadas en bash/shell.
Por ese motivo, en Symfony 5.1 hemos mejorado la forma en la que se crean
aplicaciones con un solo comando. Esto ya era posible hacerlo en versiones
anteriores de Symfony gracias al método setDefaultCommand()
, pero ahora será
todavía más fácil gracias a la nueva clase SingleCommandApplication
:
#!/usr/bin/env php <?php require __DIR__.'/vendor/autoload.php'; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\SingleCommandApplication; (new SingleCommandApplication()) ->setCode(function (InputInterface $input, OutputInterface $output) { // añade aquí el código de tu comando... }) ->run();
¡Ya está! Guarda este código un archivo (ej. mi-comando.php
) y ya puedes
ejecutarlo como cualquier otro script de consola de PHP (php my-command.php
).
Esta nueva clase soporta todas las funcionalidades de la consola de Smyfony, así
que puedes definir argumentos, opciones, la ayuda del comando, etc.
// ... use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\SingleCommandApplication; (new SingleCommandApplication()) ->setName('Mi comando') ->setVersion('1.0.0') ->setHelp('Este comando te permite...') ->addArgument('foo', InputArgument::OPTIONAL, 'El directorio') ->addOption('bar', null, InputOption::VALUE_REQUIRED) ->setCode(function (InputInterface $input, OutputInterface $output) { // ... }) ->run();
Esta funcionalidad fue contribuida por Grégoire Pineau en el pull request #34819.
Fuente: New in Symfony 5.1: Single command applications
Comentarios
Proyectos Symfony destacados
La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más
Síguenos en @symfony_es para acceder a las últimas noticias.