Представляю вашему вниманию небольшую (но функциональную) библиотеку для вывода на консоль цветного текста с поддержкой отступов. ( packagist.org )
Для установки можно воспользоваться composer
composer require shasoft/console
или скачать с github
список всех поддерживаемых цветов. Имена колонок - цвета фона, имена строк - цвета текста.
Вывод цветного текста
use Shasoft\Console\Console;
// Вывод цветного текста в строке
Console::color('red')->bgcolor('green')->write('Красный текст на зеленом фоне')->enter();
// Вывод цветного текста в строке
Console::color('green')->bgcolor('red')->writeln('Зеленый текст на красном фоне');
// Вывод цветного текста в строке
Console::color('red')->bgcolor('white')->write('Красный текст на белом фоне фоне')->reset()->writeln('Вывод текста цветом по умолчанию');
Для работы с отступами служит функция indent(значение отступа[,абсолютное значение]) - если указан второй параметр и он = true, то отступ абсолютный. Иначе отступ относительный. Для получения текущего отступа нужно вызвать функцию indent() без параметров.
Пример:
use Shasoft\Console\Console;
Console::indent(0,true); // Отступ 0
Console::indent(1)->color('red')->writeln('Отступ 1');
Console::indent(3,true)->color('green')->writeln('Отступ 3');
Console::indent(-1)->color('blue')->writeln('Отступ 2');
вывод:
К примеру был отступ = 2 indent(1) Отступ = 3
К примеру был отступ = 2 indent(-1) Отступ = 2
К примеру был отступ = 2 indent(10) Отступ = 10
К примеру был отступ = 2 indent(1) Отступ = 1
функция indent применяется к выводимой СТРОКЕ и значение будет меняться до вызова функции enter(). Т.е. вот этот код выведет строку с отступом 3
Console::indent(0,true)->color('red')->indent(1)->bgcolor('blue')->indent(1)->write('Отступ 3')->indent(1)->enter();
Можно указать стили. По умолчанию задан стиль ошибок "error"
Пример использования:
Console::indent(1,true)->style("error")->writeln('Какая-то ошибка');
вывод:
Имеются специальные функции для контроля логирования
Значения выводятся на экран с помощью функции write() только в случае если текущий уровень логирования меньше-равен глобальноному уровню логирования.
Пример:
Console::setLogLevel(0)->logLevel(1)->writeln('Не выведется, так как уровень логирования = 1 который больше 0');
Console::setLogLevel(2)->logLevel(1)->writeln('Выведется, так как уровень логирования = 1 который меньше-равен 2');
Console::setLogLevel(2)->logLevel(3)->write('Этот текст не выведется')->logLevel(1)->write('Текст на экране')->enter();
Чтобы не писать color('red')->bgcolor('green') можно писать в коротком виде
Console::red()->bg_green()->writeln('Строка красного цвета на зеленом фоне.');
Цвет фона можно задавать функцией без подчеркивания. Однако оно визуально отделяет цвет от префикса и, на мой взгляд, весьма удобна.