Re: Pre-RFC proposal: opt-in implicit interfaces / structural typing

From: Date: Sat, 08 Nov 2025 05:45:25 +0000
Subject: Re: Pre-RFC proposal: opt-in implicit interfaces / structural typing
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-129145@lists.php.net to get a copy of this message

On Friday 07 November 2025 18:05:03 (+01:00), Spencer Malone wrote:

Hey all! Long time browser, first time emailer. I wanted to start a pre-RFC
discussion on the proposal of opt-in implicit interfaces / structural typing / "golang style interfaces". I have an early mostly working POC at https://github.com/php/php-src/compare/master...SpencerMalone:php-src:implicit,
and was curious if this was an idea that could get any traction as an RFC?
For those who don't want to open the link, it's essentially:
implicit interface Drawable {
public function draw(): void;
}
If you may be that kind and allow an implicit interface to use a trait...
class Circle { public function draw(): void { } }
... then the class could use a trait as well which is then closing the distance to traits that are not able to full-fill interfaces and their using classes, so the classes can borrow from the traits and both then somewhat profit from implicit interfaces. The "innerface" naturally could only use the non-body parts (abstract parts) of the trait methods / properties, so the copy direction towards the interface is a reduction to the interface the trait implies. The trait then can be used in the implicit interface definition to do both at once (defining an interface and providing an implementation).
assert((new Circle()) instanceof Drawable); // This would be true
and if I may add, truly great - regardless with or without such trait reuse. if it then could work en-par with function defintions (define after use which currently "explicit" interfaces are not capable of) this would make it a perfect and modern addition to the language in my very own eyes.
There is some previous art around here in the form of... [...] - Spencer
- h.k.

Thread (12 messages)

« previous php.internals (#129145) next »