From efab5aabaff311872c00a0b56203b97e1257f25c Mon Sep 17 00:00:00 2001 From: angeljqv <79208641+angeljqv@users.noreply.github.com> Date: Fri, 24 Oct 2025 03:02:31 -0500 Subject: [PATCH] Fix PHP 8.5 `__sleep` deprecation (#1997) This patch breaks any implementation of __sleep in child classes/user handlers. Should be warned in the release notes. Co-authored-by: Jordi Boggiano --- src/Monolog/Handler/Handler.php | 13 ++----------- tests/Monolog/Handler/StreamHandlerTest.php | 2 +- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/src/Monolog/Handler/Handler.php b/src/Monolog/Handler/Handler.php index e89f969b..8a4e7ab1 100644 --- a/src/Monolog/Handler/Handler.php +++ b/src/Monolog/Handler/Handler.php @@ -44,19 +44,10 @@ abstract class Handler implements HandlerInterface } } - public function __sleep() + public function __serialize(): array { $this->close(); - $reflClass = new \ReflectionClass($this); - - $keys = []; - foreach ($reflClass->getProperties() as $reflProp) { - if (!$reflProp->isStatic()) { - $keys[] = $reflProp->getName(); - } - } - - return $keys; + return (array) $this; } } diff --git a/tests/Monolog/Handler/StreamHandlerTest.php b/tests/Monolog/Handler/StreamHandlerTest.php index e2241234..bc47e8ed 100644 --- a/tests/Monolog/Handler/StreamHandlerTest.php +++ b/tests/Monolog/Handler/StreamHandlerTest.php @@ -67,7 +67,7 @@ class StreamHandlerTest extends \Monolog\Test\MonologTestCase /** * @covers Monolog\Handler\StreamHandler::close - * @covers Monolog\Handler\Handler::__sleep + * @covers Monolog\Handler\Handler::__serialize */ public function testSerialization() {