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
