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
Nikita,
Just to chime in here: would it be wise to add an interface instead? (this
would automatically be added by the engine) so that the consumer of a
generated class could really know based on the interface that it's a
generated anonymous class instead of string type checking the classname?
Relying on some interface seems te be more future proof than just
changing the string to look up ;)
Keep up the good work!
Regards
Robin
Op do 6 feb. 2020 om 12:21 schreef Nikita Popov nikita.ppv@gmail.com:
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
On Thu, Feb 6, 2020 at 2:45 PM Kingsquare.nl - Robin Speekenbrink <
robin@kingsquare.nl> wrote:
Nikita,
Just to chime in here: would it be wise to add an interface instead? (this
would automatically be added by the engine) so that the consumer of a
generated class could really know based on the interface that it's a
generated anonymous class instead of string type checking the classname?
Relying on some interface seems te be more future proof than just
changing the string to look up ;)
"Being an anonymous class" is not a contract, so it should not be
represented by an interface. We already have a reliable way to detect
anonymous classes via isAnonymous() in reflection -- people who do string
matching probably do so specifically because they are dealing with class
strings, which may require special post-processing for anonymous classes
(in particular, dropping everything after the "\0").
Nikita
Op do 6 feb. 2020 om 12:21 schreef Nikita Popov nikita.ppv@gmail.com:
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
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.
Andrea