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().

Reply via email to