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