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

Publicada el

12 de marzo de 2020

Etiquetas

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.