#37814 [Opn->WFx]: Php shoul have class friends
| From: | helly@php.net | 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 don
t 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