Класс PHP для вывода в консоль цветного текста
Делал для себя скрипт для деплоя сайта на продакшен. Для чего нужно было выводить на экран что происходит. И чтобы было нагляднее решил выводить в цвете. Однако не смог найти что-то подходящее. Максимум библиотека выводила цветной текст, но не поддерживала отступы. Поэтому сделал свою библиотеку для этого. Возможно кому-то будет полезно. Небольшая (но функциональная) библиотека для вывода на консоль цветного текста с поддержкой отступов в таком вот виде
Console::ident(2)->color('brown')->bgcolor('magenta')->writeln('Привет Habr!');
- Установка
- Использование
- Отступ
- Стили
- Логирование
- Синтаксический сахар
Установка
Для установки можно воспользоваться composer
composer require shasoft/console
или скачать с github
Использование
Список всех поддерживаемых цветов. Имена колонок — цвета фона, имена строк — цвета текста.
Вывод цветного текста
- Функция color(значение) — установить цвет текста
- Функция bgcolor(значение) — установить цвет фона
- Функция write(значение1, значение2, …) — вывести значение на экран. Если значение не является строкой, то оно преобразовывается в строку с помощью php функции var_export (значение, true)
- Функция reset() — сбросить цвета в значения по умолчанию
- Функция setDefault() — установить цвета по умолчанию. Значения по умолчанию: цвет фона = black, цвет текста = white
- Функция enter($resetColor=true). По умолчанию вызов функции сбрасывает цвета в значения по умолчанию. Обратите внимание, что строка не выводится пока не вызвана функция enter (). Это связано с тем, что библиотека поддерживает отступы.
- Функция writeln(…) — write (…)+enter ()
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('Вывод текста цветом по умолчанию');
Отступы
Для работы с отступами служит функция ident(значение отступа[, абсолютное значение]) — если указан второй параметр и он = true, то отступ абсолютный. Иначе отступ относительный. Для получения текущего отступа нужно вызвать функцию ident () без параметров.
Пример:
use Shasoft\Console\Console;
Console::ident(0,true); // Отступ 0
Console::ident(1)->color('red')->writeln('Отступ 1');
Console::ident(3,true)->color('green')->writeln('Отступ 3');
Console::ident(-1)->color('blue')->writeln('Отступ 2');
вывод:
- Функция setTabSize(размер табулятора) — задает размер табулятора. По умолчанию = 3
- Функция setSpace(символ) — задает символ табулятора. По умолчанию = ' ' (пробел)
функция ident применяется к выводимой СТРОКЕ и значение будет меняться до вызова функции enter (). Т.е. вот этот код выведет строку с отступом 3
Console::ident(0,true)->color('red')->ident(1)->bgcolor('blue')->ident(1)->write('Отступ 3')->ident(1)->enter();
Стили
Можно указать стили. По умолчанию задан стиль ошибок «error»
- Функция setStyle(имя стиля, цвет текста=null, цвет фон=null) — установить параметры стиля
- Функция style(имя стиля) — использовать указанный стиль
Пример использования:
Console::ident(1,true)->style("error")->writeln('Какая-то ошибка');
вывод:
Логирование
Имеются специальные функции для контроля логирования
- Функция setLogLevel($value=null) — Установить/получить глобальный уровень логирования. По умолчанию = 0
- Функция logLevel($value=null) — Установить/получить уровень логирования. По умолчанию = 0
Значения выводятся на экран с помощью функции 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('Строка красного цвета на зеленом фоне.');
Цвет фона можно задавать функцией без подчеркивания. Однако оно визуально отделяет цвет от префикса и, на мой взгляд, весьма удобна.
Страница библиотеки