Помощник Debug Formatter
Дата обновления перевода 2024-06-24
Помощник Debug Formatter
DebugFormatterHelper предоставляет
функции для вывода информации отладки при запуске внешней программы, например,
в процессе HTTP запроса. Например, если вы использовали его для вывода результатов
запуска ls -la
в системе UNIX, он может вывести что-то вроде:
Использование 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),
'Описание некоторого процесса'
));
$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 (string $type, string $buffer) use ($output, $debugFormatter, $process): void {
$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),
'Some command description',
$process->isSuccessful()
)
);
Будет выведено:
1
RES Некоторое описание команды
В случае неудачи, это будет написано красным, а в случае удачи - зеленым.
Использование нескольких программ
Как было сказано ранее, вы также можете использовать помощнк, чтобы отобразить больше программ одновременно. Информацию о разных программах будет отображена разными цветами, чтобы ясно обозначить, какой вывод принадлежит какой команде.