From 693e4ab812c943e9660b1b3d86387d5ec8437e82 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 19 Feb 2026 15:05:01 +0000 Subject: [PATCH 1/3] Initial plan From f3f88ee034232af826bc76d5e7c1b9322f7d8a99 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 19 Feb 2026 15:16:56 +0000 Subject: [PATCH 2/3] Initial plan for fixing opis/closure v4 compatibility Co-authored-by: jrbasso <26548+jrbasso@users.noreply.github.com> --- composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 1726403..29b75ec 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,8 @@ "opis/closure": "Allow to serialize PHP closures" }, "require-dev": { - "phpunit/phpunit": ">=8 <12.0" + "phpunit/phpunit": ">=8 <12.0", + "opis/closure": "*" }, "autoload": { "psr-4": { From 7bc5fd0eb918e9cfdee7c51cc910da35b8c0fac5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 19 Feb 2026 15:18:13 +0000 Subject: [PATCH 3/3] Fix opis/closure v4 compatibility in OpisClosureSerializer Co-authored-by: jrbasso <26548+jrbasso@users.noreply.github.com> --- composer.json | 2 +- .../ClosureSerializer/OpisClosureSerializer.php | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 29b75ec..4210c96 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,7 @@ }, "require-dev": { "phpunit/phpunit": ">=8 <12.0", - "opis/closure": "*" + "opis/closure": "^3.0 || ^4.0" }, "autoload": { "psr-4": { diff --git a/src/JsonSerializer/ClosureSerializer/OpisClosureSerializer.php b/src/JsonSerializer/ClosureSerializer/OpisClosureSerializer.php index b9c4ab2..bf5f65f 100644 --- a/src/JsonSerializer/ClosureSerializer/OpisClosureSerializer.php +++ b/src/JsonSerializer/ClosureSerializer/OpisClosureSerializer.php @@ -15,6 +15,9 @@ class OpisClosureSerializer implements ClosureSerializer { */ public function serialize(Closure $closure) { + if (function_exists('Opis\Closure\serialize')) { + return \Opis\Closure\serialize($closure); + } return serialize(new OpisSerializableClosure($closure)); } @@ -26,6 +29,9 @@ public function serialize(Closure $closure) */ public function unserialize($serialized) { + if (function_exists('Opis\Closure\unserialize')) { + return \Opis\Closure\unserialize($serialized); + } return unserialize($serialized)->getClosure(); }