Компонент Symfony Console предоставляет множество утилит для отображения содержимого в командной консоли, таких как индикаторы выполнения, таблицы со всеми видами стилей, интерактивные вопросы и т. д.
В Symfony 4.1 даже ввели разделы вывода, позволяющие независимо обновлять различные части вывода. В Symfony 5.1 представили еще одну расширенную функцию, которая позволит вам управлять курсором.
Благодаря новому классу Symfony\Component\Console\Cursor
и его выразительному API вы можете показать/скрыть курсор, переместить его вверх/вниз/влево/вправо, очистить части вывода и т. д.
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);
// argument for left/right is "number of columns" (1 by default)
// argument for top/bottom is "number of rows" (1 by default)
$cursor->moveUp(2)->moveRight();
$cursor->moveDown();
// move to an arbitrary (column, row) position
$cursor->moveToPosition(7, 15);
// you can show/hide the cursor, save/restore its position, etc.
$cursor->savePosition()->hide();
}
}
В дополнение к этим методам новый класс Cursor
предоставляет несколько утилит для очистки выходных данных:
// clears the entire line where the cursor is at
$cursor->clearLine();
// clears the contents of the current line starting from the cursor position
$cursor->clearLineAfter();
// clears all the output from the cursors' current position to the end of the screen.
$cursor->clearOutput();
// clears the entire screen
$cursor->clearScreen();