Referencias Explicadas
PHP Manual

Devolver Referencias

Devolver por referencia es útil cuando se quiere usar una función para encontrar a qué variable debería estar vinculada una referencia. No use devolver por referencia para aumentar el rendimiento. El motor optimizará automáticamente esto por sí mismo. Hay que devolver referencias sólo cuando se tenga una razón técnicamente válida para hacerlo. Para devolver referencias use esta sintaxis:

<?php
class foo {
    public 
$valor 42;

    public function &
obtenerValor() {
        return 
$this->valor;
    }
}

$obj = new foo;
$miValor = &$obj->obtenerValor(); // $miValor es una referencia a $obj->valor, que es 42.
$obj->valor 2;
echo 
$miValor;                // imprime el nuevo valor de $obj->valor, esto es, 2.
?>
En este ejemplo, la propiedad del objeto devuelto por la función obtenerValor debería estar establecida, no la copia, como si estuviera sin usar la sintaxis de referncia.

Note: A diferencia de pasar un parámetro, aquí se tiene que usar & en ambos lugares - para indicar que se quiere devolver por referencia, no una copia, y para indicar que la vinculación por referencia, en vez de la asignación normal, debería ser hecha para $miValor.

Note: Si se intenta devolver una referencia desde una función con la sintaxis: return ($this->valor);, no funcionará ya que se está intentando devolver el resultado de una expresión, y no de una variable, por referencia. Sólo se puede devolver variables por referencia desde una función - nada más. Desde PHP 4.4.0 en la rama PHP4, y PHP 5.1.0 en la rama PHP5, se emite un error E_NOTICE si el código intenta devolver una expresión dinámica o un resultado del operador new.


Referencias Explicadas
PHP Manual