Nuevo en Symfony 5.1: Control preciso del cursor

El componente Console de Symfony proporciona muchas utilidades para mostrar contenidos en la consola, como por ejemplo barras de progreso, tablas con todo tipo de estilos, preguntas interactivas, etc.

En Symfony 4.1 añadimos las secciones, lo que permite actualizar diferentes partes de la pantalla de manera independiente. En Symfony 5.1 hemos añadido otra funcionalidad avanzada que te permitirá controlar el cursor de forma precisa.

Gracias a la nueva clase Symfony\Component\Console\Cursor, podrás mostrar/ocultar el cursor, moverlo hacia arriba/abajo/derecha/izquierda, borrar partes de la pantalla, etc.

namespace App\Command;
 
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Cursor;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
 
class SomeCommand extends Command
{
    protected static $defaultName = 'app:some-command';
 
    // ...
 
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        // ...
 
        $cursor = new Cursor($output);
 
        // el argumento de left/right es el número de columnas (1 por defecto)
        // el argumento de top/bottom es el número de filas (1 por defecto)
        $cursor->moveUp(2)->moveRight();
        $cursor->moveDown();
 
        // mover el cursor a una posición (columna, fila) arbitraria
        $cursor->moveToPosition(7, 15);
 
        // también puedes mostrar/ocultar el cursor, guardar/restaurar la posición, etc.
        $cursor->savePosition()->hide();
    }
}

Además de estos métodos, la clase Cursor incluye varias utilidades para borrar la pantalla:

// borra la línea entera en la que se encuentra el cursor
$cursor->clearLine();
 
// borra la línea actual, pero solo desde la posición del cursor
$cursor->clearLineAfter();
 
// borra la pantalla desde la posición del cursor hasta el final
$cursor->clearOutput();
 
// borra la pantalla entera
$cursor->clearScreen();

Esta funcionalidad fue contribuida por Pierre du Plessis en el pull request #27444.


Fuente: New in Symfony 5.1: Cursor control

Comentarios

Publicada el

15 de abril 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.