Pre-RFC discussion about adding friendship to PHP
| From: | Daniel Scherzer | Date: | Wed, 29 Apr 2026 17:30:33 +0000 |
| Subject: | Pre-RFC discussion about adding friendship to PHP | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-130710@lists.php.net to get a copy of this message | ||
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