On Tue, Mar 3, 2020 at 10:40 PM Levi Morrison <levi.morri...@datadoghq.com>
wrote:

> On Tue, Mar 3, 2020 at 8:01 AM Nikita Popov <nikita....@gmail.com> wrote:
> >
> > On Fri, Feb 7, 2020 at 11:32 AM Nikita Popov <nikita....@gmail.com>
> wrote:
> >
> > > Hi internals,
> > >
> > > I've sent a mail about this before, but as this turned into a bit of a
> > > larger change (also allowing "abstract private" methods in traits) and
> > > there's some backwards compatibility impact, I've created a proper RFC
> for
> > > this:
> > >
> > > https://wiki.php.net/rfc/abstract_trait_method_validation
> > >
> >
> > Based on Nicolas' feedback, I've adjusted the RFC to not validate the
> > visibility of the method (only the signature and "static-ness"). The
> reason
> > is outlined in the last paragraph of the Proposal section.
> >
> > With that done, I plan to open voting on this tomorrow, unless something
> > new comes up.
> >
> > Regards,
> > Nikita
>
> To clarify, this the signature enforcement is only applied to abstract
> methods that come from traits, correct? This code will remain valid?
>
> ```
> trait CompareHelper {
>   function compareTo($obj): bool {}
> }
>
> class C1 {
>   use CompareHelper;
>   function compareTo(self $obj) {}
> }
> ```
>
> Notably, non-abstract methods will be able to change argument counts,
> their type, the return type, all without restriction. Correct? I don't
> particularly like code like this, but I've seen it out there on more
> than one occasion.
>

That's right, this RFC is exclusively about abstract methods. No validation
is performed for non-abstract methods.

Nikita

Reply via email to