<?php declare (strict_types=1); namespace MailPoetVendor\Monolog\Handler; if (!defined('ABSPATH')) exit; use MailPoetVendor\Monolog\ResettableInterface; use MailPoetVendor\Monolog\Processor\ProcessorInterface; trait ProcessableHandlerTrait { protected $processors = []; public function pushProcessor(callable $callback) : HandlerInterface { \array_unshift($this->processors, $callback); return $this; } public function popProcessor() : callable { if (!$this->processors) { throw new \LogicException('You tried to pop from an empty processor stack.'); } return \array_shift($this->processors); } protected function processRecord(array $record) : array { foreach ($this->processors as $processor) { $record = $processor($record); } return $record; } protected function resetProcessors() : void { foreach ($this->processors as $processor) { if ($processor instanceof ResettableInterface) { $processor->reset(); } } } }