diff --git a/src/Monolog/Handler/Handler.php b/src/Monolog/Handler/Handler.php index dad3aac2..e89f969b 100644 --- a/src/Monolog/Handler/Handler.php +++ b/src/Monolog/Handler/Handler.php @@ -48,6 +48,15 @@ abstract class Handler implements HandlerInterface { $this->close(); - return array_keys(get_object_vars($this)); + $reflClass = new \ReflectionClass($this); + + $keys = []; + foreach ($reflClass->getProperties() as $reflProp) { + if (!$reflProp->isStatic()) { + $keys[] = $reflProp->getName(); + } + } + + return $keys; } } diff --git a/tests/Monolog/Handler/NullHandlerTest.php b/tests/Monolog/Handler/NullHandlerTest.php index d6a80074..a5f12b4f 100644 --- a/tests/Monolog/Handler/NullHandlerTest.php +++ b/tests/Monolog/Handler/NullHandlerTest.php @@ -30,4 +30,15 @@ class NullHandlerTest extends TestCase $handler = new NullHandler(Level::Warning); $this->assertFalse($handler->handle($this->getRecord(Level::Debug))); } + + public function testSerializeRestorePrivate() + { + $handler = new NullHandler(Logger::WARNING); + self::assertFalse($handler->handle($this->getRecord(Logger::DEBUG))); + self::assertTrue($handler->handle($this->getRecord(Logger::WARNING))); + + $handler = unserialize(serialize($handler)); + self::assertFalse($handler->handle($this->getRecord(Logger::DEBUG))); + self::assertTrue($handler->handle($this->getRecord(Logger::WARNING))); + } }