On Sat, Jun 15, 2024, at 16:40, Bilge wrote: > On 15/06/2024 14:53, Rowan Tommins [IMSoP] wrote: > > On 15/06/2024 12:16, Bilge wrote: > >> > >> I want to introduce the `static` keyword at the class declaration > >> level. That is, the following would be valid: `static class Foo {}`. > > > > > > This has been proposed before, and was rejected at vote. It was nearly > > 10 years ago, so opinions may have changed, but it would be worth > > reading through the prior discussion to anticipate or counter the > > objections raised, and avoid re-treading the same ground. > > > > - RFC: https://wiki.php.net/rfc/abstract_final_class > > - Pre-vote discussion threads: https://externals.io/message/79211 and > > https://externals.io/message/79338 > > - Final vote thread: https://externals.io/message/79601 > > > > Searching my list archive, I find that it came up again a few months > > ago, which I'd entirely forgotten: https://externals.io/message/121717 > > > > Slightly tangential, but some of the same discussion also came up on > > these rather lengthy threads about "static class constructors": > > https://externals.io/message/84602 and https://externals.io/message/85779 > > > > > > Regards, > > > Hi Rowan, > > That's all quite interesting, but I didn't get a good sense of why the > idea was rejected, other than people didn't like "abstract final" as the > syntax (thank God). As for why "static" was rejected, as stated, I don't > get a good sense of it at all, but rather than fall back on the opinions > of many who are mostly absent among those polled nine years ago, I'd > rather get a sense of the current sentiment of those present today. > > Cheers, > Bilge >
I can see these mostly being used for factories, laravel facades, or utility functions. I think they would probably be useful in some codebases. I would argue that in the codebases I work in, these types of constructs represent a code smell and it would be a lot easier to catch via static analysis and prevent. The current trick of using traits is much harder to catch except during code review. So, I say “yes please.” — Rob