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

Reply via email to