Переглянути джерело

Fix more instances of bad FormattableHandlerInterface usages

Jordi Boggiano 5 роки тому
батько
коміт
61e5ff2b36

+ 12 - 3
src/Monolog/Handler/BufferHandler.php

@@ -27,6 +27,7 @@ class BufferHandler extends AbstractHandler implements ProcessableHandlerInterfa
 {
 {
     use ProcessableHandlerTrait;
     use ProcessableHandlerTrait;
 
 
+    /** @var HandlerInterface */
     protected $handler;
     protected $handler;
     protected $bufferSize = 0;
     protected $bufferSize = 0;
     protected $bufferLimit;
     protected $bufferLimit;
@@ -137,9 +138,13 @@ class BufferHandler extends AbstractHandler implements ProcessableHandlerInterfa
      */
      */
     public function setFormatter(FormatterInterface $formatter): HandlerInterface
     public function setFormatter(FormatterInterface $formatter): HandlerInterface
     {
     {
-        $this->handler->setFormatter($formatter);
+        if ($this->handler instanceof FormattableHandlerInterface) {
+            $this->handler->setFormatter($formatter);
 
 
-        return $this;
+            return $this;
+        }
+
+        throw new \UnexpectedValueException('The nested handler of type '.get_class($this->handler).' does not support formatters.');
     }
     }
 
 
     /**
     /**
@@ -147,6 +152,10 @@ class BufferHandler extends AbstractHandler implements ProcessableHandlerInterfa
      */
      */
     public function getFormatter(): FormatterInterface
     public function getFormatter(): FormatterInterface
     {
     {
-        return $this->handler->getFormatter();
+        if ($this->handler instanceof FormattableHandlerInterface) {
+            return $this->handler->getFormatter();
+        }
+
+        throw new \UnexpectedValueException('The nested handler of type '.get_class($this->handler).' does not support formatters.');
     }
     }
 }
 }

+ 1 - 0
src/Monolog/Handler/FingersCrossedHandler.php

@@ -37,6 +37,7 @@ class FingersCrossedHandler extends Handler implements ProcessableHandlerInterfa
 {
 {
     use ProcessableHandlerTrait;
     use ProcessableHandlerTrait;
 
 
+    /** @var HandlerInterface */
     protected $handler;
     protected $handler;
     protected $activationStrategy;
     protected $activationStrategy;
     protected $buffering = true;
     protected $buffering = true;

+ 4 - 1
src/Monolog/Handler/GroupHandler.php

@@ -23,6 +23,7 @@ class GroupHandler extends Handler implements ProcessableHandlerInterface, Reset
 {
 {
     use ProcessableHandlerTrait;
     use ProcessableHandlerTrait;
 
 
+    /** @var HandlerInterface[] */
     protected $handlers;
     protected $handlers;
     protected $bubble;
     protected $bubble;
 
 
@@ -116,7 +117,9 @@ class GroupHandler extends Handler implements ProcessableHandlerInterface, Reset
     public function setFormatter(FormatterInterface $formatter): HandlerInterface
     public function setFormatter(FormatterInterface $formatter): HandlerInterface
     {
     {
         foreach ($this->handlers as $handler) {
         foreach ($this->handlers as $handler) {
-            $handler->setFormatter($formatter);
+            if ($handler instanceof FormattableHandlerInterface) {
+                $handler->setFormatter($formatter);
+            }
         }
         }
 
 
         return $this;
         return $this;