Новое в Symfony 7.2: Индикатор завершения работы консоли

Источник: «New in Symfony 7.2: Console Finished Indicator»
Symfony 7.2 позволяет настраивать индикатор, отображаемый при завершении команды Console.

Компонент Console стал стандартным способом создания CLI-команд и PHP приложений. Его используют более 11 000 проектов с открытым исходным кодом, а количество загрузок с момента его выхода в октябре 2011 года приблизилось к 1 миллиарду.

Такие надёжные и зрелые компоненты, как этот, уже не добавляют революционных новых возможностей, но в каждой версии Symfony мы улучшаем их, внося небольшие изменения в качество жизни и DX (опыт разработчиков).

В Symfony 7.2 мы улучшили компонент Console, чтобы можно было настраивать индикатор завершения. Если вы используете индикатор выполнения, сообщающий пользователю, что компонент не остановлен, то по умолчанию вы видите вращающийся текстовый спиннер:

Консольная команда Symfony без индикатора завершения
Консольная команда Symfony без индикатора завершения

Вы можете настроить индикатор выполнения с помощью собственного спиннера или анимации. Основная проблема заключается в том, что по завершении работы команды отображается последний использованный индикатор выполнения, который может меняться при каждом запуске команды. Такое несоответствие конечного результата часто бывает не самым лучшим.

В Symfony 7.2 мы улучшаем эту ситуацию, показывая ✔ в качестве индикатора завершения:

Команда консоли Symfony с индикатором завершения по умолчанию
Команда консоли Symfony с индикатором завершения по умолчанию

Вы можете полностью кастомизировать это значение с помощью новой опции finishedIndicatorValue. Например, можно показывать разные индикаторы в зависимости от результата выполнения команды:

use Symfony\Component\Console\Helper\ProgressIndicator;
// ...

$progressIndicator = new ProgressIndicator($output, finishedIndicatorValue: '🎉');

try {
/* здесь выполняется какая-то работа... */
$progressIndicator->finish('Finished');
} catch (\Exception) {
$progressIndicator->finish('Failed', '🚨');
}

А вот как это выглядит после успешного выполнения команды:

Команда консоли Symfony с настраиваемым индикатором завершения работы
Команда консоли Symfony с настраиваемым индикатором завершения работы

Комментарии


Дополнительные материалы

Предыдущая Статья

Руководство по пагинации в Laravel 11

Следующая Статья

Асимметричная видимость PHP свойств