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

Reply via email to