On Fri, Feb 7, 2020 at 2:35 PM Nikita Popov <nikita....@gmail.com> wrote:

> On Thu, Feb 6, 2020 at 9:08 PM Andrea Faulds <a...@ajf.me> wrote:
>
>> Hi,
>>
>> Nikita Popov wrote:
>> > Hi internals,
>> >
>> > Based on a suggestion by Nicolas Grekas,
>> > https://github.com/php/php-src/pull/5153 changes the generated name for
>> > anonymous classes to include the name of the parent class or first
>> > interface. So instead of just class@anonymous, you'll see something
>> like
>> > EventHandler@anonymous in error messages, for example.
>> >
>> > There's a minor BC break here, for code checking for a "class@anonymous
>> "
>> > prefix, which should be easy to rectify by checking for "@anonymous"
>> > instead.
>> >
>> > What do people think about doing this change?
>> >
>> > Regards,
>> > Nikita
>> >
>>
>> Perhaps it would make sense to include the namespace used by the code
>> which defines/instantiates the class? That might make it easier, when
>> looking at a mysterious anonymous class using var_dump() deep in a big
>> project perhaps, to find out where it came from.
>>
>
> That would be a possible alternative. This is similar to what we do for
> closures.
>
> As we need the generated name to be reasonably concise, we can only do one
> or the other though. I don't know which one is more useful... Maybe Nicolas
> wants to chime in.
>

I've scrolled through anon class uses in popular composer packages, and
that convinced me that parent/interface is probably the most useful
information here. Adding the namespace prefix leaves you with something
like "Amp\class@anonymous", which doesn't really tell you anything at all,
while adding the interface gives you "Amp\CancellationToken@anonymous",
which is fairly meaningful. Many more examples like this.

Nikita

Reply via email to