#37814 [Opn->WFx]: Php shoul have class friends

From: Date: Tue, 07 Aug 2007 12:05:53 +0000
Subject: #37814 [Opn->WFx]: Php shoul have class friends
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-115834@lists.php.net to get a copy of this message
ID: 37814 Updated by: helly@php.net Reported By: henke dot andersson at comhem dot se -Status: Open +Status: Wont fix Bug Type: Feature/Change Request -Operating System: Linux Redhat 9 +Operating System: * -PHP Version: 6CVS-2006-06-15 (CVS) +PHP Version: * New Comment: We decided against those complex features. Previous Comments: ------------------------------------------------------------------------ [2007-08-06 22:29:49] michael at chunkycow dot com dot au The whole C++ friends thing is a mess, use an interface between your super friendly classes and simply dont use it if the classes arent joined at the hip, this would even help to keep nice low coupling and aid re-use. Private inner classes have some merit but are not a cure for common sense. ------------------------------------------------------------------------ [2006-06-15 10:33:27] henke dot andersson at comhem dot se Description: ------------ Php should have a friend structure for classes, like c++. That way some normaly private things can be used by selected other classes and functions. An alternative would be to do it like Java with inner classes, but personaly I think that while inner classes could be usefull in php, friend classes should also exist like in c++. Reproduce code: --------------- <?php //my suggestion for the syntax class A { static function callB(B $b) { $b->privatefunction(); } } class B { friend class A; friend function C; private function privatefunction() { echo 'privatefunction!'; } } function C(B $b) { $b->privatefunction(); } $b=new B(); A::callB($b); C($b); Expected result: ---------------- Class A and function C should be able to call B::privatefunction. Actual result: -------------- Since this functionality doesn't exist the code wont even compile. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=37814&edit=1

« previous php.bugs (#115834) next »