1 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
我認(rèn)為沒(méi)有現(xiàn)成的東西可以為您完成此任務(wù)。你可以用記錄器實(shí)現(xiàn)類似的東西......但是你必須擺弄配置錯(cuò)誤級(jí)別,可能注入多個(gè)記錄器,控制臺(tái)輸出永遠(yuǎn)不會(huì)匹配一個(gè)SymfonyStyle,等等。
您最好自己構(gòu)建,這應(yīng)該不是特別困難。只需構(gòu)建一些包裝/裝飾的東西SymfonyStyle;并捕獲輸出。
我將提供起始構(gòu)建塊,由您來(lái)完成實(shí)施:
class LoggingStyle
{
private SymfonyStyle $style;
private array $logEntries = [];
public function __construct(InputInterface $input, OutputInterface $output) {
$this->style = new SymfonyStyle($input, $output);
}
private function addLog(string $type, string $message): void
{
$this->logEntries[] = [
'type' => $type,
'message' => $message,
'time' => date('Y-m-d H:i:s')
];
}
public function flushLog():array
{
$log = $this->logEntries;
$this->logEntries = [];
return $log;
}
public function caution(string $message): void
{
$this->addLog('caution', $message);
$this->style->caution($message);
}
public function text(string $message): void
{
$this->addLog('text', $message);
$this->style->caution($message);
}
public function block(string $message): void
{
$this->addLog('block', $message);
$this->style->caution($message);
}
}
您需要實(shí)現(xiàn)SymfonyStyle您需要使用的界面的每個(gè)部分,并決定如何處理某些特殊行為(如果有的話)(例如,諸如 、 或進(jìn)度條之類的東西ask())table()。但這完全取決于您的實(shí)施。
還要決定如何格式化電子郵件中的每種不同輸出樣式,因?yàn)檫壿嬌蠜](méi)有辦法直接翻譯它。
您可以直接使用此類,如果達(dá)到需要聚合輸出的程度,您只需調(diào)用LoggingStyle::flushLog()并獲取數(shù)組形式的所有條目,以便您進(jìn)行相應(yīng)處理和發(fā)送。
- 1 回答
- 0 關(guān)注
- 98 瀏覽
添加回答
舉報(bào)