(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/
|
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 |
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); /** 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 */ |