Помічник Formatter

Дата оновлення перекладу 2022-11-11

Помічник Formatter

Помічник Formatter надає функції для форматування виведення кольорами. Ви можете зробити просунутіші речі за допомогою цього помічника, ніж ви можете зробити в Як розфарбовувати та стилізувати виведення консолі.

FormatterHelper включено до набору помічника за замовчуванням, який ви можете отримати, викликавши getHelperSet():

1
$formatter = $this->getHelper('formatter');

Методи повертають рядок, який ви зазвичай відображуватимете консолі, передаючи його методу OutputInterface::writeln.

Відображення повідомлень у розділі

Symfony надає певний стиль при відображенні повідомлення, що належить до деякого "розділу". Він відображує розділ у кольорі та з дужками навколо нього, а саме повідомлення правіше від цього. Без урахування кольору, це виглядає так:

1
[SomeSection] Тут якесь повідомлення, повʼязане з розділом

Щоб відтворити цей стиль, ви можете використати метод formatSection():

1
2
3
4
5
$formattedLine = $formatter->formatSection(
    'SomeSection',
    'Ось деяке повідомлення, повʼязане з цим розділом'
);
$output->writeln($formattedLine);

Відображення повідомлень у блоці

Іноді вам може захотітися відобразити цілий блок тексту з фоновим кольором. Symfony використовує це при відображенні повідомлень про помилки.

Якщо ви відображаєте ваші повідомлення про помилки більше, ніж в одному рядку, вручну, то ви помітите, що фон має довжину кожного окремого рядку. Використайте formatBlock(), щоб згенерувати виведення блоку:

1
2
3
$errorMessages = ['Помилка!', 'Щось пішло не так'];
$formattedBlock = $formatter->formatBlock($errorMessages, 'error');
$output->writeln($formattedBlock);

Як ви бачите, передача масиву повідомлень методу formatBlock() створює бажане виведення. Якщо ви передасте true в якості третього параметра, то блок буде відформатовано з більшою підложкою (одним пустим рядком над та под повідомленнями та двома пробілами зліва та справа).

Конкретний "стиль", який ви використовуєте у блоці, залежить лише від вас. В цьому випадку, ви використовуєте передвизначений стиль 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
6
$truncatedMessage = $formatter->truncate($message, 7, '!!'); // result: Це дуже!!
$truncatedMessage = $formatter->truncate($message, 7, '');   // result: Це дуже

$truncatedMessage = $formatter->truncate('test', 10);
// результат: test
// так як довжина рядку "test..." коротша, ніж 10