Ik liep net tegen iets raars aan, wat me op zich wel aardig uitkwam, maar waarvan ik het toch maar erg vreemd vind dat het zo werkt. Blijkbaar heb ik van buitenaf toegang tot private members van een object, mits dat binnen een method van een object van dezelfde klasse is (of een afgeleide, mits de aangeroepen method van de superklasse is). Is dat normaal?
Ik zou verwachten private is private en dus afblijven, maar blijkbaar niet. Waarom is dit zo?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| <? class A { private $a; private $value; public function setA() { $a = new A(); $a->value = "foo"; // dit mag?! $this->a = $a; } public function getA() { return $this->a; } public function getValue() { return $this->value; } } class B { private $a; public function setA() { $a = new A(); $a->value = "foo"; // dit mag niet. $this->a = $a; } public function getA() { return $this->a; } public function getValue() { return $this->value; } } $anA = new A(); $anA->setA(); echo $anA->getA()->getValue()."<br>"; $aB = new B(); $aB->setA(); echo $aB->getA()->getValue()."<br>"; ?> |
Ik zou verwachten private is private en dus afblijven, maar blijkbaar niet. Waarom is dit zo?
[ Voor 9% gewijzigd door Genoil op 04-11-2005 16:14 ]