Помощник Formatter
Помощник Formatter
Помощник Formatter предоставляет функции для форматирования вывода цветами. Вы можете сделать более продвинутые вещи с помощью этого помощника, чем вы можете сделать в Как раскрашивать и стилизовать вывод консоли.
FormatterHelper включён в набор помощника по умолчанию, который вы можете получить, вызвав getHelperSet():
1
$formatter = $this->getHelper('formatter');
Методы возвращают строку, которую вы обычно будете отображать консоли, передавая её методу OutputInterface::writeln.
Отображение сообщений в разделе
Symfony предоставляет определённый стиль при отображении сообщения, принадлежащего некоторому "разделу". Он отображает раздел в цвете и со скобками вокруг него, а само сообщение правее от этого. Без учёта цвета, это выглядит так:
1
[SomeSection] Здесь какое-то сообщение, связанное с разделом
Чтобы воспроизвести этот стиль, вы можете использовать метод formatSection():
1 2 3 4 5
$formattedLine = $formatter->formatSection(
'SomeSection',
'Here is some message related to that section'
);
$output->writeln($formattedLine);
Отображение сообщений в блоке
Иногда вам может захотеться отобразить целый блок текста с фоновым цветом. Symfony использует это при отображении сообщений об ошибках.
Если вы отображаете ваши сообщения об ошибках более, чем в одной строчке, вручную то вы заметите, что фон имеет длину кажой отдельной строки. Используйте formatBlock(), чтобы сгенерировать вывод блока:
1 2 3
$errorMessages = array('Error!', 'Something went wrong');
$formattedBlock = $formatter->formatBlock($errorMessages, 'error');
$output->writeln($formattedBlock);
Как вы видите, передача массива сообщений методу
formatBlock()
созадаёт желаемый вывод. Если вы передадите true
в качестве третьего
параметра, то блок будет форматирован с большей подкладкой (одной пустой
строчкой над и под собщениями и 2 пробелами слева и справа).
Конкретный "стиль", который вы используете в блоке, зависит только от вас. В этом
случае, вы используете предопределённый стиль error
, но существуют другие, или
вы можете создать собственный. См. Как раскрашивать и стилизовать вывод консоли.
Отображение обрезанных сообщений
Иногда вам нужно будет отобразить сообщение, обрезанное до точного количества символов. Это возможно с методом truncate().
Если вы хотите обрезать очень длинное сообщение, к примеру, до 7 символов, вы можете написать:
1 2 3
$message = "Это очень длинное сообщние, которое стоит обрезать";
$truncatedMessage = $formatter->truncate($message, 7);
$output->writeln($truncatedMessage);
И вывод будет:
1
Это оче...
Сообщение обрезается до заданной длинны, а потом к концу этой строки добавляется суффикс.
Отрицательная длина строки
Если длина отрицательная, то количество символов для обрезания считается от конца строки:
1
$truncatedMessage = $formatter->truncate($message, -5);
Это приведёт к :
1
Это очень длинное сообщение, которое стоит обр...
Пользовательский суффикс
По умолчанию используется суффикс ...
. Если вы хотите использовать другой,
просто передайте его в качестве третьго аргумента метода. Суффикс всегда добавляется,
кроме случаев, когда длина обрезания больше длины сообщения и суффикса.
Если вы не хотите использовать суффикс вообще, просто передайте пустую строку:
1 2 3 4 5
$truncatedMessage = $formatter->truncate($message, 7, '!!'); // result: Это оч!!
$truncatedMessage = $formatter->truncate($message, 7, ''); // result: Это оч
$truncatedMessage = $formatter->truncate('test', 10));
/* result: test
because length of the "test..." string is shorter than 10 */