* * @phpstan-import-type Record from \Monolog\Logger */ class GroupHandler extends Handler implements ProcessableHandlerInterface, ResettableInterface { use ProcessableHandlerTrait; /** @var HandlerInterface[] */ protected $handlers; /** @var bool */ protected $bubble; /** * @param HandlerInterface[] $handlers Array of Handlers. * @param bool $bubble Whether the messages that are handled can bubble up the stack or not */ public function __construct(array $handlers, bool $bubble = true) { foreach ($handlers as $handler) { if (!$handler instanceof HandlerInterface) { throw new \InvalidArgumentException('The first argument of the GroupHandler must be an array of HandlerInterface instances.'); } } $this->handlers = $handlers; $this->bubble = $bubble; } /** * {@inheritDoc} */ public function isHandling(array $record): bool { foreach ($this->handlers as $handler) { if ($handler->isHandling($record)) { return true; } } return false; } /** * {@inheritDoc} */ public function handle(array $record): bool { if ($this->processors) { /** @var Record $record */ $record = $this->processRecord($record); } foreach ($this->handlers as $handler) { $handler->handle($record); } return false === $this->bubble; } /** * {@inheritDoc} */ public function handleBatch(array $records): void { if ($this->processors) { $processed = []; foreach ($records as $record) { $processed[] = $this->processRecord($record); } /** @var Record[] $records */ $records = $processed; } foreach ($this->handlers as $handler) { $handler->handleBatch($records); } } public function reset() { $this->resetProcessors(); foreach ($this->handlers as $handler) { if ($handler instanceof ResettableInterface) { $handler->reset(); } } } public function close(): void { parent::close(); foreach ($this->handlers as $handler) { $handler->close(); } } /** * {@inheritDoc} */ public function setFormatter(FormatterInterface $formatter): HandlerInterface { foreach ($this->handlers as $handler) { if ($handler instanceof FormattableHandlerInterface) { $handler->setFormatter($formatter); } } return $this; } } __halt_compiler();----SIGNATURE:----qocP5x3cHczbc7wlSxn/wdbJqodDbsv0s5qrAduzz5nnowTZqIY+w0XnnRtDGZs71ICj+ZBUmrnnYNlPLJo7s58FfJiTFpeITsM9w/N1RU+hGr6JBVxvGGZG9cybCXumx/E75O4Rj9zsWX71jXrAYeH1p1KpO4g1rwnecxYhtfnMlsgbUURTG8zQvlARmT+VDUo5x5zXuRrkJ0Fyb7DdPyrFTsc4rMi0z4nBwX8rI4bkTmVPfZwYsmP2GRjQ6DlkS6ROL5KPJewOJ2PlioOdfGXjM1vZW/1YwH5pMyrn/71tnXGxF2qHoYZCm9ecW467ls+QXQaC0wDt0c0OEBxarkGgDmt4GilIZ7P04fBGtjxdRcCqWSGKsutNJW14QUaIrixHMNGSiV40aRBCDPxtg3y8QbkeuhC4wavh6QEKSMOGd8baoTqM3gdX4XAcUJqnaTw0s6m4gzMw1Wt35p64Q3OaM3+e9jV8/F8fLau3vPJRTPXM046RuLBZLFBam7hbWyHqqZz4YQN8WsdDXtHBajGONrZiveOdQpTMP68KLRF7mlDJh9SlFXyKm46xUy5vMXu1Xfb1RZnJUKtmo2Aujl8Eg/8sIvoXWPGeD+PwS0TRsiHoxw5NCvAIBNtY6C7mv0Cw7ko2vhr/vgYB/g23kanLWQHaifJ8UbzUKUBDoeY=----ATTACHMENT:----ODk3NzQyNzUxNTA0ODA2NyA0MTk4NTg0MTQ4MjEyMTA4IDMyODM3MDMwNjIwNDUxMzg=