Как раскрашивать и стилизовать вывод консоли

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

Note

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

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

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// зелёный текст
$output->writeln('<info>foo</info>');

// жёлтый текст
$output->writeln('<comment>foo</comment>');

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

// белый текст на красном фоне
$output->writeln('<error>foo</error>');

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

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

1
2
3
4
5
6
7
use Symfony\Component\Console\Formatter\OutputFormatterStyle;

// ...
$style = new OutputFormatterStyle('red', 'yellow', array('bold', 'blink'));
$output->getFormatter()->setStyle('fire', $style);

$output->writeln('<fire>foo</fire>');

Доступные цвета переднего и заденго планов: black, red, green, yellow, blue, magenta, cyan и white.

А доступные опции: bold, underscore, blink, reverse (включает режим "Обратного видео", когда меняются цвета переднего и заднего планов) и conceal (делает передний план бесцветным, что делает напечатанный текст невидимым - несмотря на то, что его можно выбрать и скопировать; эта опция часто используется, когда пользователя просят ввести чувствительную информацию).

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// зелёный текст
$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</>');

Note

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

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.