Add leading backslash to enum and class names in var_export

From: Date: Thu, 31 Mar 2022 15:45:29 +0000
Subject: Add leading backslash to enum and class names in var_export
Groups: php.internals 
Request: Send a blank email to internals+get-117466@lists.php.net to get a copy of this message
Hi everyone We've had two bug reports for var_export not working for enums. The reason for that is that var_export does not add a leading backslash to names of enums. This will cause them to be resolved as \CurrentNamespace\EnumNamespace\EnumName instead of just \EnumNamespace\EnumName. enum A { case B; } echo var_export(A::B, true), "\n"; > A::B This is a problem for things like Doctrines ProxyGenerator that embeds the result of var_export in classes with namespaces (https://github.com/doctrine/common/pull/955). The Doctrine team resolved this by adding a use of the enum at the top of the file but that really shouldn't be necessary. The same issue already exists for classes. class C {} echo var_export(new C(), true), "\n"; > C::__set_state(array( > )) https://bugs.php.net/bug.php?id=64554 Marco Pivetta created a PR that adds leading backslash to all class or enum names of var_export. Adding a backslash will make the code work both inside or outside namespaces. https://github.com/php/php-src/pull/8233 To avoid disruption, I'm proposing to merge this into PHP 8.2 only. Unless anybody has any objections to this change I will merge it in a few weeks. Ilija

« previous php.internals (#117466) next »