* * @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:----s0lFOwYl9QZYyTgLIUSLWaqceRoT48Ri3M7B39Ps0o8H1eyhhXuSrorg9phwGRu5NlNypfe/pF0sAuKw/6cgy3bbxbMSmD3u/6nYPxUJqMYXvGxoWG73k8+peuCtwkC3wNzgM/RiCWiZ3cog9wsHI23PdUgub4xBo8Y/Rnzq7ossGd2RQP113qUCuL124jNpnWqyLCA/+rVWY8XaEogHTKaG+ky/dapJqcKm7JN5OuHHnc4KwfvT3wNwkea12uP0UW14MN/65PuzaHcy6HVbiYCPTIFAxfXv7FKtCAt4IrCXj8SCnVCCI4aN90o3S6mGSVco+UUPYTXLW8EU5cLMZLEz3WtQivXVS7rtwP6vZV0XR+2QK8Au2JHEZ6UTu1tauwi17LStshiGr+1mcsfZputFPjuACVgdJTHo5RgRf0kx8hxqXGJGpStXCaf2bV4W6h8szPZUAmBxEGMPyvkt6xP8mZZM72Qym7IlhCDYnIleb5dkxzZgi8GZdUqRgnZK5McDZCZ+/F7rgZZf7j8OW/gQQU6pkzA3SFsIHbd1F9oyANgvpEiTvLWvhfb4dhZAt5u8I6gU8vqJhCA5UsJTyOkjDDh4K8fnkpjTyxuTxUWUfKZ3+ImzkawSdsb8bZlzTTHUth+UXfVI/L6yW6IenCIYLvocSRuzd99JTlUIj5A=----ATTACHMENT:----ODk5MTgxMDAyNTA0NjkzNyA4MTAyMjY3Njk0Nzk1NDAgNjUyMTM0MjUzNzAxNTY2Mg==