> Doesn't this violate the principle: It should be possible to add new features > without touching old code?
This depends on which syntax is picked, both `for` and attribute syntax will be completely BC. using `sealed`+`permits` or `permits` only will result in these keywords being reserved, so classes named `Sealed` or `Permits` will not work in PHP 8.1. > Isn't namespace-internal access a better feature for the same purpose? That > is, only allows a class to be extended within the same namespace. No, this is a different feature, sealed classes can permit classes in a completely different namespace, and restrict inheritance to a per-defined list of classes. If we would allow inheritance in the same namespace, it's extremely easy to get around it: ``` namespace Lib { abstract class MyProxy implements PrivateFooInterface {} } namespace App { class MyFooImplementation extends \Lib\MyProxy { // ... } } ``` while it is possible to get around sealed, or even final keywords ( https://github.com/dg/bypass-finals/blob/master/src/BypassFinals.php ), bypassing private classes/interface is much easier, and doesn't require any hacks. ---- On Sat, 24 Apr 2021 16:52:20 +0100 Olle Härstedt <olleharst...@gmail.com> wrote ---- 2021-04-24 12:56 GMT, Pierre <mailto:pierre-...@processus.org>: > Le 24/04/2021 à 12:55, Saif Eddin Gmati a écrit : >> Hello Internals, >> >> I'm sending this email to open discussion about sealed classes, >> interfaces, and traits feature for PHP 8.1. >> >> I have create a Draft RFC here: >> https://wiki.php.net/rfc/sealed_classes >> <https://wiki.php.net/rfc/sealed_classes> >> >> A major concern for few people have been the syntax, in which it >> introduces 2 new keywords into the languages, therefor, i have added a >> section about alternative syntax which could be used to avoid this >> problem. >> >> Regards, >> >> Saif. 1) Doesn't this violate the principle: It should be possible to add new features without touching old code? 2) Isn't namespace-internal access a better feature for the same purpose? That is, only allows a class to be extended within the same namespace. Olle -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php