From 03783ba5dca8fb8c88d7b7e4614201724e8b08c9 Mon Sep 17 00:00:00 2001 From: Jacob Dreesen Date: Tue, 26 Mar 2024 22:28:36 +0100 Subject: [PATCH 1/2] Fix generation of enum default values with PHP 8.1 --- src/Prophecy/Doubler/Generator/ClassCodeGenerator.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php b/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php index 2d30a3f2e..c6f046c03 100644 --- a/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php +++ b/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php @@ -110,7 +110,13 @@ private function generateArguments(array $arguments): array $php .= '$'.$argument->getName(); if ($argument->isOptional() && !$argument->isVariadic()) { - $php .= ' = '.var_export($argument->getDefault(), true); + $default = var_export($argument->getDefault(), true); + + if ($argument->getDefault() instanceof \UnitEnum && 0 !== strpos($default, '\\')) { + $default = '\\'.$default; + } + + $php .= ' = '.$default; } return $php; From 310ddfeb53f4d6491fb02b1154bc9660cedf1ad8 Mon Sep 17 00:00:00 2001 From: Jacob Dreesen Date: Wed, 27 Mar 2024 12:36:08 +0100 Subject: [PATCH 2/2] Add comment --- src/Prophecy/Doubler/Generator/ClassCodeGenerator.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php b/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php index c6f046c03..ddc6985cd 100644 --- a/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php +++ b/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php @@ -112,6 +112,7 @@ private function generateArguments(array $arguments): array if ($argument->isOptional() && !$argument->isVariadic()) { $default = var_export($argument->getDefault(), true); + // This is necessary for PHP 8.1, as enum cases are exported without a leading slash in this version if ($argument->getDefault() instanceof \UnitEnum && 0 !== strpos($default, '\\')) { $default = '\\'.$default; }