Помічник Formatter
Дата оновлення перекладу 2025-07-1250
Помічник Formatter
Помічник FormatterHelper надає функції для форматування виведення кольорами. Ви можете зробити просунутіші речі за допомогою цього помічника, ніж з базовими кольорами та стилями
$formatter = new FormatterHelper();
Методи повертають рядок, який ви зазвичай відображуватимете консолі, передаючи його методу OutputInterface::writeln.
Note
В якості альтернативи розгляньте використання SymfonyStyle для відображення стилізованих блоків.
Відображення повідомлень у розділі
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
, але існують інші стилі (info
,
comment
, question
), або ви можете створити власний. Див. Як розфарбовувати та стилізувати виведення консолі.
Відображення обрізаних повідомлень
Іноді вам потрібно буде відобразити повідомлення, обрізане до точної кількості символів. Це можливо з методом 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
Форматування часу
Іноді вам буде потрібно відформатувати час до секунд. Це можливо зробити за
допомогою методу formatTime().
Перший аргумент - це секунди для форматування, а другий аргумент - це
точність результату (за замовчуванням 1
):
1 2 3 4 5 6
Helper::formatTime(0.001); // 1 мілісекунда
Helper::formatTime(42); // 42 cекунди
Helper::formatTime(125); // 2 хвилини
Helper::formatTime(125, 2); // 2 хвилини, 5 секунд
Helper::formatTime(172799, 4); // 1 день, 23 години, 59 хвилини, 59 секунд
Helper::formatTime(172799.056, 5); // 1 день, 23 години, 59 хвилини, 59 секунд, 56 мілісекунд
7.3
Підтримка форматування до мілісекунди була представлена в Symfony 7.3.
Форматування памʼяті
Іноді вам буде потрібно відформатувати пам'ять до Гб, Мб, Кб та байтів. Це можливо зробити за допомогою методу formatMemory(). Єдиним аргументом є розмір пам'яті для форматування:
Helper::formatMemory(512); // 512 байтів Helper::formatMemory(1024); // 1 Кб Helper::formatMemory(1024 1024); // 1.0 Мб Helper::formatMemory(1024 1024 * 1024); // 1 Гб