Devolver referencias
Devolver referencias es útil cuando se
quiere utilizar una función para determinar a qué variable
debe estar ligada una referencia.
No utilice no
el retorno por referencia para mejorar el rendimiento,
el motor es suficientemente robusto para optimizar esto
internamente. Devuelva referencias solo
cuando haya buenas razones técnicas
para hacerlo. Para devolver referencias, utilice esta sintaxis:
En este ejemplo, se asigna un valor a la propiedad del objeto
devuelta por la función
getValue, y no a su copia,
como sería el caso si no se hubiera utilizado la sintaxis de referencia.
Nota:
A diferencia del paso de parámetro, aquí, se debe utilizar
&
en ambos lugares, tanto para
indicar que se devuelve por referencia (no por copia), como
para indicar que también se asigna por referencia (no por copia
tampoco) para la variable $myValue.
Nota:
Si se intenta devolver una referencia desde una función
con la sintaxis: return ($this->value);
,
esto no funcionará no como
se espera, y devolverá el resultado de la expresión,
y no de la variable, por referencia. Solo se pueden devolver
variables por referencia desde una función, y nada más.
Para utilizar la referencia devuelta, se debe utilizar la asignación
por referencia:
Nota:
Si la asignación se realiza sin el símbolo &
,
por ejemplo $collection = collector();
,
la variable $collection recibirá una copia del valor,
y no la referencia devuelta por la función.
Para pasar la referencia devuelta a otra función que espera una referencia,
se puede utilizar la siguiente sintaxis:
Nota:
Note que array_push(&collector(), 'foo');
no funcionará, y resultará en un error
fatal.