Re: Re: Changing the generated name for anon classes

From: Date: Fri, 07 Feb 2020 13:40:20 +0000
Subject: Re: Re: Changing the generated name for anon classes
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to internals+get-108424@lists.php.net to get a copy of this message
Le ven. 7 févr. 2020 à 14:36, Nikita Popov <nikita.ppv@gmail.com> a écrit : > On Thu, Feb 6, 2020 at 9:08 PM Andrea Faulds <ajf@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. > The proposed names are the most useful from my experience, take e.g. these lines, found in the same class: throw new class() implements ServerExceptionInterface {...}; [...] throw new class() implements ClientExceptionInterface {...}; The debugging experience is better mentioning ServerExceptionInterface or ClientExceptionInterface than the namespace of the surrounding class. The file + line info will fo straight to this surrounding class also, so the proposal maximizes the amount of useful info from my experience. Nicolas

« previous php.internals (#108424) next »