> This sounds interesting but it breaks some expectations. > > Interesting because you can have any class act as an interface for other > classes with the interface being built up of any public properties or method > that exists on that class.
In my original suggestion, it's not like any class, but only those you specifically mark as `class interface`, not just `class`. Closer to the end of my idea I also suggest that maybe it's worth it to allow implementing, like interfaces, ANY classes, not only those specifically marked with the new syntax, but this indeed brings up some issues. > Ok, maybe not any class but just a final class. I see no issue there of allowing to reimplement the interface of a non-final class. This still is better than extending from it IMO. But we _probably_ should prohibit it from abstract classes. > And also maybe just a final class that doesn't yet implement an interface. Also, here is no conflict as well. When reimplementing the interface of the class, you can treat it as a normal interface - which can extend from other interfaces. > The expectation it breaks is that if you have a final class, whenever you use > it, you expect some specific implementation exists on it. > And this would break the expectation and in real life someone might pass a > totally different implementation. > Will not break generic LSP but still will break some expectations. That's why a new syntax is brought up. This expectation might indeed break if we allow to reimplement any existing final class, instead of requiring a manual opt-in. (sorry, this email is sent to you the second time, Alexandru, because I forgot to reply to the maillist as well) Regards, Illia / somenitko -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php