Помічник Debug Formatter

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

Помічник Debug Formatter

DebugFormatterHelper надає функції для виведення інформації налагодження при запуску зовнішньої програми, наприклад, в процесі HTTP-запиту. Наприклад, якщо ви використовували його для виведення результатів запуску figlet symfony, він може вивести щось типу:

Використання debug_formatter

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

1
$debugFormatter = $this->getHelper('debug_formatter');

Форматувальник приймає рядки та повертає форматований рядок, який ви потім виводите у консоль (або навіть записуєте лог інформації чи робите щось ще).

Всі методи цього помічника мають ідентифікатор в якості першого аргументу. Це унікальне значення для кожної программи. Таким чином, помічник може налагоджувати значення для декількох програм одночасно. При використанні Компонента Process, ви скоріш за все захочете використовувати spl_object_hash.

Tip

Ця інформація часто занадто деталізована для того, щоб відображатися за замовчуванням. Ви можете використати рівні деталізації, щоб відображати її лише у режимі налагодження (-vvv).

Запуск програми

Як тільки ви запускаєте програму, ви можете використати start(), щоб відобразити інформацію про те, що програма запущена:

1
2
3
4
5
6
7
8
9
// ...
$process = new Process(...);

$output->writeln($debugFormatter->start(
    spl_object_hash($process),
    'Some process description'
));

$process->run();

Це виведе:

1
RUN Опис якогось процесу

Ви можете налаштувати префікс, використовуючи третій аргумент:

1
2
3
4
5
6
7
$output->writeln($debugFormatter->start(
    spl_object_hash($process),
    'Some process description',
    'STARTED'
));
// виведе:
//  STARTED Опис якогось процесу

Інформація про виконання виведення

Деякі програми дають виведення під час роботи. Ця інформація може бути відображена з використанням progress():

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use Symfony\Component\Process\Process;

// ...
$process = new Process(...);

$process->run(function ($type, $buffer) use ($output, $debugFormatter, $process) {
    $output->writeln(
        $debugFormatter->progress(
            spl_object_hash($process),
            $buffer,
            Process::ERR === $type
        )
    );
});
// ...

У разі успіху, буде виведено:

1
OUT Виведення процесу

А у разі невдачі:

1
ERR Виведення процесу

Третій аргумент - булеве значення, яке повідомляє функції, чи є виведення помилкою, чи ні. Якщо true, то виведення вважається виведенням помилки.

Четвертий та пʼятий аргументи дозволяють вам перезаписати префікс для нормального виведення та виведення помилки, відповідно.

Зупинка програми

Коли програма зупинена, ви можете використати stop(), щоб сповістити про це користувача:

1
2
3
4
5
6
7
8
// ...
$output->writeln(
    $debugFormatter->stop(
        spl_object_hash($process),
        'Якийсь опис команди',
        $process->isSuccessful()
    )
);

Буде виведено:

1
RES Якийсь опис команди

У разі невдачі, це буде написано червоним, а у разі успіху - зеленим.

Використання декількох програм

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