Re: RFC Proposal - static modifier for classes

From: Date: Thu, 01 Jan 1970 00:00:00 +0000
Subject: Re: RFC Proposal - static modifier for classes
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-121718@lists.php.net to get a copy of this message
19 nov 2023 22:28:16 Lanre Waju <lanre@online-presence.ca>: > Hi, similar to the abstract and readonly modifiers to classes (similar in syntax only), I > propose a class level "static" modifier that ensures: > > 1. The class cannot be instantiated and will throw an exception if attempted. > > 2. All methods and variables in the class are implicitly static. > > 3. (optional based on community input) It should have the same effect on traits and interfaces > > For example: > > static class X { > >     const int k = 1; > >     private string $a > >     function foo():void{} > >     private function bar():void{} > > } > > would be equivalent to > > class X { > >     const int k = 1; > >     private static string $a > >     public static function foo():void{} > >     private static function bar():void{} > > } > > and so on. I will be implementing this myself it it gets approved. > > Cheers, > > Lanre > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: https://www.php.net/unsub.php Hi, Super on board with this, I felt the need for this feature uncountable times in many years, usually the temporary solution was just to mark the class as final and create a private constructor, but especially the private constructor part makes it a bit ugly, too indirect and not immediately obvious. The only doubts I have about this proposal are the omission of static keywords for functions and properties. I understand this is inline with readonly classes, but I don't feel like static is a keyword that should be omittable when declaring static methods and properties. Regards, Daniil Gentili.

« previous php.internals (#121718) next »