CREAR COMANDOS PERSONALIZADOS EN SYMFONY 5
El componente Console de symfony permite la creación de interfaces de línea de comandos para después emplearse en tareas como cronjobs, importaciones, etc...En este post voy a explicar como crear comandos personalizados en symfony 5:
Lo primero es crear una clase en la carpeta Command, dentro de src. El nombre de la clase será: NombreComandoCommand que extenderá de la clase Command de symfony. Dicha clase tendrá, como mínimo, dos métodos: método configure y el método execute, este último tiene que ser de tipo public. Voy a poner un ejemplo de un comando para que se vea mejor su funcionamiento, en este caso del comando SaludoCommand.php:
namespace App\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class SaludoCommand extends Command
{
//Nombre del comando para su ejecución desde consola
protected static $defaultName = 'app:saludo';
protected function configure()
{
//Se configura el comando. Lo más importante es addArgument. Aunque los comandos pueden no tener argumentos o parámetos
$this
->setDescription('Muestra un saludo a un nombre pasado por parámetro')
->setHelp('Este comando saluda.')
->addArgument('name', InputArgument::REQUIRED, 'Pass the name.');
}
public function execute(InputInterface $input, OutputInterface $output): int
{
//Se captura el parámetro o argumento pasado por consola
$name = $input->getArgument('name');
if (empty($name)) {
throw new \Exception('Missing parameter name');
return Command::FAILURE;
}
$output->writeln('Hola ' . $name );
return Command::SUCCESS;
}
}
Para ejecutar el comando del ejemplo hay que ir a la consola y a la carpeta del proyecto y escribir php bin/console app:saludo parametro_nombre y mostrará el saludo al nombre especificado. Compartir en twitter