Як розфарбовувати та стилізувати виведення консолі

Дата оновлення перекладу 2022-12-12

Як розфарбовувати та стилізувати виведення консолі

Використовуючи кольори у виведенні команди, ви можете вирізняти різні типи виведення (наприклад, важливі повідомлення, заголовки, коментарі та ін.).

Note

За замовчуванням, консоль команд Windows не підтримує розфарбовування виведення. Компонент Консоль відключає розфарбовування виведення для систем Windows, але якщо ваші команди викликають інші скрипти, які випускають кольорові послідовності, то вони будуть неправильно відображені як сирі екрановані символи. Встановіть безкоштовні додатки Cmder, ConEmu, ANSICON, Mintty (використовувані за замовчуванням у GitBash та Cygwin) або Hyper, щоб додати підтримки розфарбовуванняу вашу консоль команд 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;

// ...
$outputStyle = new OutputFormatterStyle('red', '#ff0', ['bold', 'blink']);
$output->getFormatter()->setStyle('fire', $outputStyle);

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

Для кольорів заднього та переднього плану доступні будь-які hex-кольори. Крім того, підтримуються такі іменовані кольори: black, red, green, yellow, blue, magenta, cyan, white, gray, bright-red, bright-green, bright-yellow, bright-blue, bright-magenta, bright-cyan і bright-white.

Note

Якщо термінал не підтримує істинні кольори, заданий колір заміняється на найближчий колір, в залежності від здатностей терміналу. Наприклад, #c0392b понижується до #d75f5f у 256-кольорових терміналах, і до red у 8-кольорових терміналах.

6.2

Підтримка 256-кольорових терміналів була представлена в Symfony 6.2.

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

Ви також можете встановити ці кольори та опції прямо всередині тегу імені:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// використання іменованих кольорів
$output->writeln('<fg=green>foo</>');

// використання справжніх кольорів
$output->writeln('<fg=#c0392b>foo</>');

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

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

// жирний текст з нижнім підкресленням
$output->writeln('<options=bold,underscore>foo</>');

Note

Якщо вам потрібно відобразити тег буквально, то екрануйте його за допомогою зворотного слешу: \<info>, або використайте метод escape(), щоб екранувати всі теги, що містяться у заданому рядку.

Відображення посилань, на які можна натиснути

Команди можуть використовувати спеціальний тег <href>, щоб відображати посилання, схоже на еленмети веб-сторінок <a>:

1
$output->writeln('<href=https://symfony.com>Symfony Homepage</>');

Якщо ваш термінал належить до списку емуляторів терміналів, що підтримують посилання, ви можете натиснути на текст "Symfony Homepage", щоб відкрити його URL у вашому браузері за замовчуванням. Інакше, ви побачите "Symfony Homepage" в якості звичайного тексту, і URL буде втрачений.