Paso de variables por Referencia

Podemos pasar variables a una función por referencia, para que ésta pueda modificar sus argumentos. La sintáxis es la siguiente :


function foo (&$var)
{
    $var++;
}

$a=5;
foo ($a);
// $a será 6 aqui



Notar que no hay signo de referencia en la llamada a la función - solo en la definición de la misma. Colocar el signo de referencia solo en la definición de la función alcanza para pasar correctamente el argumento por referencia.


La lista siguiente indica que puede ser pasado por referencia:

  • Variables, por ejemplo foo($a)
  • Operador New, por ejemplo foo(new foobar())
  • Referencias, devueltas por una función:



    function &bar()
    {
        $a = 5;
        return $a;
    }
    foo(bar());

    Se recomienda leer también la explicación sobre retorno por referencia.


Cualquier otro tipo de expresión no debería pasarse por referencia, ya que el resultado sería indefinido. Los ejemplos de paso por referencia siguientes son inválidos:


function bar() // Notar que falta &
{
    $a = 5;
    return $a;
}
foo(bar());

foo($a = 5) // Expresión, no variable
foo(5) // Constante, no variable

Estos requerimientos son para PHP 4.0.4 y superior.

No response to “Paso de variables por Referencia”