Re: Friend class/function

From: Date: Fri, 06 Nov 2015 04:40:02 +0000
Subject: Re: Friend class/function
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-89093@lists.php.net to get a copy of this message
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

« previous php.internals (#89093) next »