Le jeu. 31 mars 2022 à 17:50, Larry Garfield <la...@garfieldtech.com> a écrit :
> 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. > > It could break fixtures that ppl might use to compare the two outputs of var_export().