Re: Friend class/function
| From: | Stephen Coakley | 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, GeorgesAs 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