Returning by-reference is useful when you want to use a function
to find which variable a reference should be bound to. Do
not use return-by-reference to increase performance, the
engine is smart enough to optimize this on its own. Only return references
when you have a valid technical reason to do it! To
return references, use this syntax:
<?php class foo { public $value = 42;
public function &getValue() { return $this->value; } }
$obj = new foo; $myValue = &$obj->getValue(); // $myValue is a reference to $obj->value, which is 42. $obj->value = 2; echo $myValue; // prints the new value of $obj->value, i.e. 2. ?>
In this example, the property of the object returned by the
getValue function would be set, not the
copy, as it would be without using reference syntax.
Note:
Unlike parameter passing, here you have to use
& in both places - to indicate that you
return by-reference, not a copy as usual, and to indicate that
reference binding, rather than usual assignment, should be done
for $myValue.
Note:
If you try to return a reference from a function with the syntax:
return ($this->value); this will not
work as you are attempting to return the result of an
expression, and not a variable, by reference. You can
only return variables by reference from a function - nothing else.
E_NOTICE error is issued since PHP 4.4.0 and PHP
5.1.0 if the code tries to return a dynamic expression or a result of the
new operator.