Re: Add leading backslash to enum and class names in var_export

From: Date: Thu, 31 Mar 2022 15:50:09 +0000
Subject: Re: Add leading backslash to enum and class names in var_export
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-117467@lists.php.net to get a copy of this message
On Thu, Mar 31, 2022, at 10:45 AM, Ilija Tovilo wrote: > 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 What would be the disruption on 8.1? It wouldn't break the existing use trick, and I doubt anyone is leveraging this deliberately. --Larry Garfield

« previous php.internals (#117467) next »