Re: RFC Proposal - static modifier for classes
| From: | Lanre Waju | Date: | Mon, 20 Nov 2023 08:35:15 +0000 |
| Subject: | Re: RFC Proposal - static modifier for classes | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-121722@lists.php.net to get a copy of this message | ||
Thank you for bringing those threads to my attention. I hadn't encountered them before, but it appears to be the typical argument of "I don't want this, so you shouldn't," along with "why do x when you can just do y (notice how y is not x)."
1. I will personally implement this feature.
2. This change is non-breaking and backward compatible.
3. It is entirely opt-in. If you hold reservations about using static classes, you can simply choose not to use them.
The proposal is designed with the intention of improving code clarity, reinforcing design principles, and establishing a clear and standardized approach to expressing the intended usage of a class. While I advocate for member properties and methods to be implicitly static, I am open to understanding alternative viewpoints on why this might not be the optimal choice.
Cheers,
Lanre.
On 2023-11-20 12:52 a.m., Rowan Tommins wrote:
On 19 November 2023 21:28:08 GMT, Lanre Waju <lanre@online-presence.ca> wrote:Hi, similar to the abstract and readonly modifiers to classes (similar in syntax only), I propose a class level "static" modifier that ensures:Hi Lanre, There was a proposal for this several years ago which was declined at the voting stage: https://wiki.php.net/rfc/abstract_final_class That doesn't mean we can't look again, but any new proposal would need to at least address the reasons the previous one was declined. I believe these are the relevant discussion threads: https://externals.io/message/79211 https://externals.io/message/79338 https://externals.io/message/79601 My memory is that one of the main points against was that a class with only static methods is just a namespace, and you can already put functions directly in a namespace. The only issue being that we don't have good autoloading support for such functions, and that's a whole different problem... Regards,