On 11/01/2015 10:04 AM, georges wrote:
​Hi php internals,

I recently discovered ​the "friendship concept" in c++ and i really love
the concept.
And i wonder if the php internals would be interested to implements it in
the next 7.x major version.


​The concept is simple:

It would allow declared "friend"​class method/function to call a
private/protected member of an other class:


The syntax could be like this (for a single friendship):

private function extractDataFromCache() friend myFriendClass1
{

}


or like this for many friendships:

private function extractDataFromCache() friend
{myFriendClass1::method1, myFriendClass2::method1,
myFriendClass3::method1}
{

}


In this way extractDataFromCache() could be called directly by method1 in
myFriendClass1 and myFriendClass2 etc....

Off course deep calling should not be allowed. (E.g a function inside
myFriendClass1 that will call extractDataFromCache() won't inherit the
friendship.

Regards,
Georges


As Rowan already wrote, package / namespace visibility is the way to go here instead. Personally I found adding "friendship" in C++ to be a poor decision, since it's usually a sign of a code smell (not *always* though). There are admittedly a couple of use cases, but keeping things inside a private namespace is probably a more elegant solution.

I'd support namespace visibility. +1

--
Stephen

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to