> On 8 Jul 2024, at 14:42, Bilge <bi...@scriptfusion.com> wrote:
> 
> On 08/07/2024 01:16, Mike Schinkel wrote:
>> Congrats on getting it to this point.
> Thanks. It's been an adventure :^)
> 
>> I support this in all but the RFC's restriction on `abstract`, as I have 
>> previously mentioned on the list.
> I must have missed a key point here. Let's suppose we're writing a follow-up 
> RFC to permit `static` and `abstract` together. In as few sentences as 
> possible, what is the benefit conferred to the developer?
> 
> Cheers,
> Bilge
> 


Hi,

I'm sure Mike has his own answer for this, but I'm going to reiterate mine 
again, because it apparently wasn't really understood the first several times I 
said it:

The reasons are two fold:

(a) so that a static class can declare abstract methods either explicitly or 
implicitly (by implementing an interface without providing concrete 
implementations of all methods in the interface)

(b) to keep consistency with regular classes. 


The suggested static keyword for classes doesn't introduce any additional 
behaviour that isn't already possible, it just prevents some uses without the 
need for boilerplate - the main purpose is to "signify developer intent".

The actual behaviour applied to "static" classes is already possible in PHP by 
simply omitting any instance members and declaring a private constructor. These 
classes work fine with the abstract keyword. There are no ambiguities, no 
gotchas or foot guns, there is nothing confusing. It's a standard part of class 
hierarchy.


So really the question should be: why do you feel the need to *disallow* a 
combination that has no technical issues, and works already? If you're going to 
disallow abstract why not disallow any class inheritance at all? Because that's 
what abstract relates to: class hierarchy. Why remove some support but keep the 
rest?




Cheers

Stephen 



Reply via email to