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

Reply via email to