Re: RFC: short and inner classes

From: Date: Sat, 15 Mar 2025 10:35:46 +0000
Subject: Re: RFC: short and inner classes
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to [email protected] to get a copy of this message
On Sat, Mar 15, 2025, at 01:01, Rob Landers wrote:
> 
> 
> On Sat, Mar 15, 2025, at 00:21, Rowan Tommins [IMSoP] wrote:
>> On 05/03/2025 23:11, Rob Landers wrote:
>> >
>> > I'd like to introduce my RFC for discussion: 
>> > https://wiki.php.net/rfc/short-and-inner-classes
>> 
>> 
>> As a user, I find the concept of inner classes quite confusing.
>> 
>> However, I was looking at some code earlier and thought an "inner enum" 
>> would be useful, to replace various "MODE_FOO" type class constants - 
>> but I see those are left to future scope. :(
> 
> Actually, it appears I did not limit it in the implementation... So, maybe we could play with
> it and see what breaks. I simply left traits, enums, and interfaces to future scope because 1) I
> didn't have a working implementation yet, 2) had no idea what would break and 3) every time
> someone suggests a change to enums, the discussion explodes.
> 
> Having inner enums, traits, and interfaces is actually quite simple. Might as well see how
> simple. :) But fwiw, I do plan on a near immediate RFC(s) for these if this thing passes, as well as
> short classes -- I also have a semi-finished draft with short enums as well, but that one is
> actually physically impossible without making 'enum' a true reserved word.. The
> "hack" (if you will) to bypass that requirement is still in place and makes the grammar
> (likely) impossible.
> 
> I will have to fix this tomorrow, because I am not a fan of having inner classes on interfaces,
> at least. I will play with it on enums and traits and see what breaks. I suspect inner classes on
> traits will cause utter chaos.
> 
>> I'm aware they exist in a lot of other languages, though, so I thought 
>> I'd look around at how the proposed version compares. It seems there's 
>> quite a zoo out there...
>> 
>> One common theme I do note is that all four of the pages I found are 
>> titled "nested classes" or "nested types"; in some cases, "inner 
>> class"/"inner type" has a specific meaning, which I don't think matches
>> 
>> the RFC's proposal.
> 
> I actually borrowed heavily from C#. I'm familiar with its usage and rules, and it fits
> nicely with PHP paradigms.
> 
> — Rob

After playing around with it in enums, traits, and even interfaces, I've decided to allow it in
them all. I've updated the RFC, fixed an issue in the implementation, and clarified some poorly
worded sections. I've also added more realistic examples.

— Rob


Thread (102 messages)

« previous php.internals (#126777) next »