Return einer Referenz auf eine Eigenschaft/Variable

PHP  (27.04.2010 12:14) Dieses kleine Beispiel zeigt, wie man eine Referenz auf eine Variable/Eigenschaft über eine Funktion zurück geben kann.
Wichtig ist dabei das "&" vor dem Namen der Methode get().

Mit diesem "Trick" wird sogar die private/public Regelung ausgehebelt. Ein Zugang über $object->var ist aber gleichzeitig nicht möglich.
http://blog.sim4000.de/php_return_einer_referenz_auf_eine_eigenschaftvariable/entry/269/

Quellcode (ausblenden | aufklappen)

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
47
48
49
<?php
 
echo highlight_file(__FILE__, true);
 
class classfoo {
 
   private $var;
 
   function __construct() {
      $this->var = "asdf";
   }
 
   function &get() {
      return $this->var;
   }
 
   function mkecho() {
      var_dump($this->var);
   }
 
}
 
$c = new classfoo();
 
$var = $c->get();
$var .= "ghjkl";
 
echo "<h3>Call by Reference</h3>";
var_dump($var);
echo "<h3>Call by Function</h3>";
$c->mkecho();
echo "<h3>Call by Value</h3>";
var_dump($c->var);
 
?>
 
 
<?php /** Ausgabe:
 
Call by Reference
string(9) "asdfghjkl"
Call by Function
string(4) "asdf"
Call by Value
 
Fatal error: Cannot access private property classfoo::$var in /var/www/html/test/return_reference.php on line 33
 
*/
?>