Re: RFC: short and inner classes

From: Date: Tue, 25 Mar 2025 21:05:49 +0000
Subject: Re: RFC: short and inner classes
References: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  Groups: php.internals 
Request: Send a blank email to internals+get-126942@lists.php.net to get a copy of this message
On 25 March 2025 20:29:16 GMT, Rob Landers <rob@bottled.codes> wrote: > Personally, I'd feel that file-private should be kept as simple as possible and limit it > to "top-level" things, but that doesn't necessarily have to be the case. If we did > allow it on methods/properties, when mixing it with regular visibility, what happens? > fileprivate public private(set) ... means what exactly? If we didn't have "protected", would you ask the same about "protected private"? "fileprivate" would be just another access level, not something you'd combine with existing ones. > maybe fileprivate on a property means > public in the file, but private > outside the file. But then how would that intersect with inheritance? That was the point of my philosophical rambling about Swift: you don't have to define new access levels in relation to old ones, or new features as exceptions to old definitions. You can just define the keywords you allow, and the access they provide. That's true whether you're defining "private", "fileprivate", or "access_level_42". For instance, "fileprivate" could simply mean "accessible from any code defined in this file". Since classes are fully declared in one file, that makes it a strict superset of the access currently meant by "private", and applies equally well to a whole type, a method, or a property. I see no reason for inheritance to be involved at all. If we want an access level that means "accessible from any code in this file, or any subclass of the current type", we can make up a keyword for that as well - "fileprotected", or "fileprivate_or_protected", or whatever. Rowan Tommins [IMSoP]

« previous php.internals (#126942) next »