Как задать цвет и стиль выводу в консоль?

Используя цвета для отображения выходных данных консольных команд в Symfony, вы можете различать различные типы выходных данных (например, важные сообщения, заголовки, комментарии и т.д.).

По умолчанию консоль команд Windows не поддерживает раскраску вывода. Компонент Console отключает выходную раскраску для систем Windows, но если ваши команды вызывают другие сценарии, которые генерируют цветовые последовательности, они будут неправильно отображаться как необработанные управляющие символы. Установите приложения Cmder, ConEmu, ANSICON, Mintty (используемые по умолчанию в GitBash и Cygwin) или приложения Hyper-free, чтобы добавить поддержку окраски в командную консоль Windows.

Использование цветовых стилей

Всякий раз, когда вы выводите текст, вы можете окружить текст тегами, чтобы раскрасить вывод. Например:

// зеленый цвет $output->writeln('foo'); // желтый цвет $output->writeln('foo'); // черный текст на голубом фоне $output->writeln('foo'); // белый текст на красном фоне $output->writeln('foo');

Закрывающий тег можно заменить на </>, который отменяет все параметры форматирования, установленные последним открытым тегом.

Также вы можете определить свои собственные стили, используя класс OutputFormatterStyle:

use Symfony\Component\Console\Formatter\OutputFormatterStyle; // ... $outputStyle = new OutputFormatterStyle('red', 'yellow', ['bold', 'blink']); $output->getFormatter()->setStyle('fire', $outputStyle); $output->writeln('foo');

Среди доступных цветов имеются: черный, красный, зеленый, желтый, синий, пурпурный, голубой и белый.

Также доступны следующие варианты: полужирный, подчеркивание, моргание, обратный (включает режим «обратное видео», когда цвета фона и переднего плана меняются местами) и скрытый (задает прозрачный цвет переднего плана, делая напечатанный текст невидимым — хотя его можно выбрать и скопировать; эта опция обычно используется, когда пользователя просит ввести конфиденциальную информацию).

Вы также можете установить эти цвета и параметры прямо внутри имени тега:

// зеленый текст
$output->writeln('<fg=green>foo</>');

// черный текст на голубом фоне
$output->writeln('<fg=black;bg=cyan>foo</>');

// жирный текст на жултом фоне
$output->writeln('<bg=yellow;options=bold>foo</>');

// жирный текст с нижним подчеркиванием
$output->writeln('<options=bold,underscore>foo</>');

Если вам нужно визуализировать тег буквально, экранируйте его обратной косой чертой: \ или используйте метод escape() для экранирования всех тегов, включенных в данную строку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *