Главная » Хабрахабр » Класс PHP для вывода в консоль цветного текста

Класс PHP для вывода в консоль цветного текста

Для чего нужно было выводить на экран что происходит. Делал для себя скрипт для деплоя сайта на продакшен. Однако не смог найти что-то подходящее. И чтобы было нагляднее решил выводить в цвете. Поэтому сделал свою библиотеку для этого. Максимум библиотека выводила цветной текст, но не поддерживала отступы. Небольшая (но функциональная) библиотека для вывода на консоль цветного текста с поддержкой отступов в таком вот виде Возможно кому-то будет полезно.

Console::indent(2)->color('brown')->bgcolor('magenta')->writeln('Привет Habr!');

  1. Установка
  2. Использование
  3. Отступ
  4. Стили
  5. Логирование
  6. Синтаксический сахар

Установка

Для установки можно воспользоваться 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('Вывод текста цветом по умолчанию');

Отступы

Иначе отступ относительный. Для работы с отступами служит функция 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

вывод: Пример вывода с отступом

  • Функция setTabSize(размер табулятора) — задает размер табулятора. По умолчанию = 3
  • Функция setSpace(символ) — задает символ табулятора. По умолчанию = ' ' (пробел)

Т.е. функция indent применяется к выводимой СТРОКЕ и значение будет меняться до вызова функции enter(). вот этот код выведет строку с отступом 3

Console::indent(0,true)->color('red')->indent(1)->bgcolor('blue')->indent(1)->write('Отступ 3')->indent(1)->enter();

Стили

По умолчанию задан стиль ошибок "error" Можно указать стили.

  • Функция setStyle(имя стиля,цвет текста=null,цвет фон=null) — установить параметры стиля
  • Функция style(имя стиля) — использовать указанный стиль

Пример использования:

Console::indent(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('Строка красного цвета на зеленом фоне.');

Однако оно визуально отделяет цвет от префикса и, на мой взгляд, весьма удобна. Цвет фона можно задавать функцией без подчеркивания.

Страница библиотеки

upd: раз уж мне указали на ошибку в имени функции ident вместо indent, то я её исправил чтобы не смущать тех, кто знает английский хорошо 🙂


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

[Из песочницы] Создание домашнего медиацентра. Пролог

Пролог Всё имеет своё начало. Вот и эта история началась с желания иметь свой медиацентр. Внимательно присмотревшись к предложениям продавцов, я понял, что серийные модели не удовлетворяют мои потребности. А аппетит у меня здоровый… Сразу приведу перечень моих пожеланий: Всё ...

Дайджест интересных материалов для мобильного разработчика #279 (10 — 16 декабря)

В новом дайджесте у нас шикарное расследование про геолокацию и то, как приложения делятся данными с рекламодателями, Metal и SceneKit для разработчиков, история приложения на $500,000, лучшие SDK, рост и реклама 2018. SceneKit — высокоуровневый фреймворк трехмерной графики в iOS, ...