Re: Pre-RFC discussion about adding friendship to PHP
| From: | Rob Landers | Date: | Thu, 30 Apr 2026 10:59:57 +0000 |
| Subject: | Re: Pre-RFC discussion about adding friendship to PHP | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-130716@lists.php.net to get a copy of this message | ||
On Wed, Apr 29, 2026, at 19:30, Daniel Scherzer wrote:
> 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
Hi Daniel,
We saw some friendship discussions in my nested class RFC, where nested classes implicitly became
friends of the outer class. I'd recommend checking those threads for feedback about friendship
and scope.
— Rob