Новое в Symfony 5.2: Правильные цвета в консоли

Компонент Symfony Console предоставляет стиль по умолчанию для вывода вашей команды, но вы также можете применять собственные стили и цвета. Однако вы могли использовать только восемь основных цветов ANSI для цвета текста и фона.

В Symfony 5.2 улучшаем эту функцию для поддержки 24-битных цветов, также известных как «истинные цвета». В общей сложности более 16 миллионов различных цветов, чтобы ваши консольные команды выглядели великолепно.

Вместо поддержки всех различных способов определения цветов (RGB, HSV, HSL, именованные цвета и т. д.) выбрали прагматическое решение, основанное на шестнадцатеричных цветах, которые хорошо известны разработчикам/дизайнерам и которые легко получить из любое дизайнерское приложение.

Самый простой способ использовать эти новые шестнадцатеричные цвета — использовать ярлыки fg и bg в выходном содержимом:

// using a predefined style
$output->writeln('... contents ...');

// custom style using basic colors
$output->writeln('... contents ...');

// custom style using true colors
$output->writeln('... contents ...');

Шестнадцатеричные цвета должны включать префикс #, и они могут состоять только из 3 или 6 символов (8-значные значения, включающие альфа-канал, не поддерживаются). Вы также можете использовать эти цвета вне компонента консоли с помощью нового класса Color:

use Symfony\Component\Console\Color;

$color = new Color('#00ff00', '#00f');
echo $color->apply('... contents ...');

// you can mix basic and true colors
$color = new Color('red', '#00f');

// the third optional argument defines the styles
$color = new Color('#000', '#fff', ['underscore', 'reverse']);

Если истинные цвета не поддерживаются консолью/терминалом, они возвращаются к наиболее похожему цвету по умолчанию.