Re: Re: RFC: short and inner classes

From: Date: Sun, 23 Mar 2025 15:17:30 +0000
Subject: Re: Re: RFC: short and inner classes
References: 1 2  Groups: php.internals 
Request: Send a blank email to [email protected] to get a copy of this message
On Wed, Mar 12, 2025, at 5:10 AM, Rob Landers wrote:

> Hello internals,
>
> I've made some major updates to the text of the RFC to clarify 
> behaviors and revisited the implementation (which is still under 
> development, though I hope to have a draft by the end of this weekend).. 
> Here's a broad overview of what has changed in inner classes:
>
> - Accessing inner classes is done via a new token: ":>" instead of "::".
> - Inner classes may now be infinitely nested.
> - Inner classes may be declared abstract.
> - Documented changes to ReflectionClass.
> - Usage of static to refer to inner classes is restricted to prevent 
> accidental violations of LSP.
>
> Otherwise, there are not any big changes, but a lot of time was spent 
> clarifying behavior and expanding on the reasoning for those decisions 
> in the RFC itself.
>
> — Rob

I've been following this thread with interest, and at the moment I'm honestly undecided. 
I certainly see the use cases for this functionality (whatever it gets named), but as a practical
matter it sounds like it introduces a lot of extra clunk and complexity.  And it seems like the use
cases could be addressed as well with either fileprivate or module-private.  (The former being
considerably less work.)

So, how would nested classes compare to fileprivate, in terms of ability to solve the problem space?
 As I understand it, the goal is:

1. Classes that can be instantiated only by the class that uses them.
2. But can be returned from that class to a caller and reused as appropriate.

The autoloading question (loading a whole file for just an implementation detail value object) is
not one that carries much weight for me, as that's a user-space question, not an engine
question.  (Nothing in PHP itself says you cannot put 20 3 line classes or enums together in one
file.  It's just PSR-4 that says not go. Even composer would allow it if configured properly) 
So how would the less-complicated alternative compare?

--Larry Garfield


Thread (102 messages)

« previous php.internals (#126915) next »