iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 16
1
Software Development

輪子們,聽口令,大部分解開始!系列 第 16

Monolog(5)--Handler 不要亂玩 Processor 啊

  • 分享至 

  • xImage
  •  

昨天提到 AbstractHandler 會實作存在 Processor 的方法,但實質上 AbstractHandler 是不會使用 Processor 的。

Monolog 的設計是另外寫一個 AbstractProcessingHandler 來繼承 AbstractHandler ,在裡面處理 Processor

protected function processRecord(array $record)
{
    if ($this->processors) {
        foreach ($this->processors as $processor) {
            $record = call_user_func($processor, $record);
        }
    }

    return $record;
}

實作 AbstractProcessingHandler 只要實作 write 方法即可。

其他都是因實作功能需求,把迭代 Processor 的任務放到 handle 的開始、中間、或是後面。

比方說 BufferHandler 是把所有記錄全都放到記憶體裡,直到程序結束後,再一次性的往外送。這種情況下,就會需要在實際 Handler 裡,拿到真正的 record 後,才能跑 Processor ,再存 buffer 。


上一篇
Monolog(4)--Processor 又是哪位?
下一篇
Monolog(6)--Handler 之間的關係
系列文
輪子們,聽口令,大部分解開始!17
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
凍仁翔
iT邦新手 3 級 ‧ 2018-01-07 01:14:17

講帥生日快樂!

我要留言

立即登入留言