Retorno por referência é útil quando você precisa utilizar uma função para localizar variável cuja referência precisa ser obtida. Não use retorno por referência para aumentar performance, a engine é esperta o bastante para otimizar isto para você. Somente retorne referências quando você tem uma razão técnica para isso! Para retornar referências, use a sintaxe:
<?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.
?>
Nota: Diferentemente da passagem de parâmetros por referência, aqui você precisa utilizar & em ambos os lugares - primeiro para indicar o retorno por referência (e não a cópia), e depois para indicar a ligação da referência (em vez da assimilação convencional) que precisa ser explícita para $myValue.
Se você tentar retornar uma referência de uma função com a sintaxe:
return ($this->value); isto não irá
funcionar como você espera, para retornar o resultado de uma
expressão, e não uma variável, por referência. Você pode
somente retornar variáveis por referência para uma função - nada além.
Erro E_NOTICE
é emitido desde o PHP 4.4.0 e PHP
5.1.0 se o código tenta retornar uma expressão dinâmica ou um resultado do operador
new.