Re: [RFC] Traits with interfaces
| From: | Nikita Popov | Date: | Thu, 18 Feb 2016 18:28:54 +0000 |
| Subject: | Re: [RFC] Traits with interfaces | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-91274@lists.php.net to get a copy of this message | ||
On Wed, Feb 17, 2016 at 3:25 PM, Kevin Gessner <kgessner@etsy.com> wrote:
> Hello internals team! I'd like to propose an RFC to allow traits to
> implement interfaces.
>
> I've noticed s pattern in Etsy's code and elsewhere, where a trait provides
> a common implementation of an interface. Classes that use the trait are
> required to also explicitly declare the interface to benefit. I propose
> that traits be permitted to declare and implement interfaces. Classes that
> use such a trait would then implement the interface, as though it were
> declared on the class, without declaring the interface explicitly.
>
> I believe this small change would be a useful improvement to the OO
> system. I've written a draft RFC, but I don't have karma to create the
> wiki page for it. Could someone please grant wiki karma to my account,
> kevingessner?
>
> I don't yet have an implementation, but I'll be starting on one once I've
> posted the RFC. I look forward to your thoughts and feedback.
>
Without given an opinion on the RFC itself, this might be interesting for
context:
http://hhvm.com/blog/9581/trait-and-interface-requirements-in-hack
HHVM already supports "trait Foo implements Iface" with the semantics that
the interface is also implemented by the using class.
Additionally HHVM supports a notion of "require implements Iface" which
means that the using class must implement this interface.
Nikita