Re: Pre-RFC proposal: opt-in implicit interfaces / structural typing
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
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)