Hi internals, I'd like to add support for friendship in PHP. I don't mean friendship in the PSR-8 huggable way, but rather in the C++ way of allowing access to non-public parts of a class without needing to use Reflection.
I haven't started work on implementing this yet, but there is a big question about how to indicate friendship that I wanted to get some feedback on. Specifically, should it be added with a new keyword, or with an attribute? Keyword * matches C++ * suggests that friends are aspects of the class, like properties and constants and methods * but would look a bit ugly if we added support for friends that are just for specific properties/methods/constants Attribute * matches how other metadata is added to classes * would make it look cleaner if subsequently support was added for friendship being applied to specific properties/methods/constants * would differ from the current builtin attributes in that it doesn't just add/remove warnings, but changes some functionality For a more in-depth explanation of the inspiration and these two potential approaches, see https://scherzer.dev/Blog/20260309-php-friends. To be clear, I have not yet written an implementation, much less the RFC, but I wanted to get some initial feedback on if people would prefer a new keyword, or an attribute, for declaring friends. -Daniel
