Nuevo en Symfony 4.1: mejoras en la consola
La nueva funcionalidad estrella del componente Console en Symfony 4.1 es la que permite manipular la salida de la consola de forma avanzada. No obstante, hemos añadido muchas otras novedades interesantes a este componente.
Ejecutar el comando sugerido
Cuando escribes mal el nombre de un comando, Symfony te muestra una lista de posibles alternativas con comandos que tienen nombres parecidos. En Symfony 4.1 si solo hay una alternativa, Symfony te preguntará si quieres ejecutarla directamente:
$ ./bin/console app:user:impot Command "app:user:impot" not defined. Do you want to run "app:user:import" instead? [y/n]
Esta funcionalidad fue contribuida por Pierre du Plessis en el pull request #25732.
Nuevos estilos para las tablas
En Symfony 4.1 las tablas que muestren los comandos de consola pueden hacer uso
de dos nuevos estilos llamados box
y box-double
:
$table->setStyle('box'); $table->render();
┌───────────────┬──────────────────────────┬──────────────────┐ │ ISBN │ Title │ Author │ ├───────────────┼──────────────────────────┼──────────────────┤ │ 99921-58-10-7 │ Divine Comedy │ Dante Alighieri │ │ 9971-5-0210-0 │ A Tale of Two Cities │ Charles Dickens │ │ 960-425-059-0 │ The Lord of the Rings │ J. R. R. Tolkien │ │ 80-902734-1-6 │ And Then There Were None │ Agatha Christie │ └───────────────┴──────────────────────────┴──────────────────┘
$table->setStyle('box-double'); $table->render();
╔═══════════════╤══════════════════════════╤══════════════════╗ ║ ISBN │ Title │ Author ║ ╠═══════════════╪══════════════════════════╪══════════════════╣ ║ 99921-58-10-7 │ Divine Comedy │ Dante Alighieri ║ ║ 9971-5-0210-0 │ A Tale of Two Cities │ Charles Dickens ║ ║ 960-425-059-0 │ The Lord of the Rings │ J. R. R. Tolkien ║ ║ 80-902734-1-6 │ And Then There Were None │ Agatha Christie ║ ╚═══════════════╧══════════════════════════╧══════════════════╝
Esta funcionalidad fue contribuida por Dany Maillard en el pull request #25301 y #26693.
Nuevos métodos para crear estilos de tablas
Además de estos nuevos estilos, hemos añadido un montón de nuevos métodos para que puedas configurar cualquier parte de la tabla y así puedas crear tus propios estilos.
Por ejemplo, el nuevo método setCrossingChars()
permite configurar nueve
caracteres diferentes utilizados para dibujar la tabla:
public function setCrossingChars( string $cross, string $topLeft, string $topMid, string $topRight, string $midRight, string $bottomRight, string $bottomMid, string $bottomLeft, string $midLeft ); // * 1---------------2-----------------------2------------------3 // | ISBN | Title | Author | // 8---------------0-----------------------0------------------4 // | 99921-58-10-7 | Divine Comedy | Dante Alighieri | // | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens | // | 960-425-059-0 | The Lord of the Rings | J. R. R. Tolkien | // 7---------------6-----------------------6------------------5 // @param string $cross Crossing char (see #0 of example) // @param string $topLeft Top left char (see #1 of example) // @param string $topMid Top mid char (see #2 of example) // @param string $topRight Top right char (see #3 of example) // @param string $midRight Mid right char (see #4 of example) // @param string $bottomRight Bottom right char (see #5 of example) // @param string $bottomMid Bottom mid char (see #6 of example) // @param string $bottomLeft Bottom left char (see #7 of example) // @param string $midLeft Mid left char (see #8 of example)
Esta funcionalidad fue contribuida por Dany Maillard en el pull request #25456.
Añadido soporte para iteradores
En Symfony 4.1, los métodos write()
y writeln()
han añadido soporte para
que puedas pasarles un iterador de PHP en vez de tener que pasarles todos los
contenidos a la vez:
private function generateMessages(): iterable { yield 'foo'; yield 'bar'; } // ... $output->writeln($this->generateMessages()); // La salida por pantalla es: // foo\n // bar\n
Esta funcionalidad fue contribuida por Tobias Schultze y Maxime Steinhausser en el pull request #26847 y #26863.
Fuente: New in Symfony 4.1: Console improvements
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.