Referencias en PHP

Hoy he aprendido algo que no sabia en PHP. Las referencias. Básicamente te permite un "acceso directo" a una variable (o funcion). Es muy útil sobretodo para no tener 2 variables con el mismo contenido.


Referencias en PHP.

Para demostraros de lo que estoy hablando, os voy a dejar un simple ejemplo.
<?php
$foo = 'Hola mundo.';
echo 'El contenido de $foo es: '.$foo.'<br />';
$bar = &$foo;
echo 'El contenido de $bar es: '.$bar.'<br />';
$bar = 'Adios mundo';
echo 'El contenido de $foo es: '.$foo.'<br />';
?>

Esto debería retornar:
El contenido de $foo es: Hola mundo.
El contenido de $bar es: Hola mundo.
El contenido de $foo es: Adios mundo

A esto se lo llama: Asignar por referencia. De este ejemplo notamos 2 cosas. Al declarar a $bar, utilizo &$foo. El & ahí es bastante importante pues crea una referencia a dicha variable. Y, no modificamos $foo sino $bar. Pero al ser $bar una referencia de $foo, en realidad se modifica $foo.

¿De que nos sirve esto?


Pues podemos declarar 2 variables y que las 2 manejen el mismo contenido. Muy útil en funciones. Ademas, podríamos hacer lo siguiente:
<?php
// Declaramos la variable.
$var = 'Hola mundo.';
// Pasamos $var por referencia.
function adios_mundo(& $var){
   $var .= ' Adios mundo.';
}
// Ejecutamos la funcion
adios_mundo($var);
// Imprimimos $var.
echo $var;
?>

Esto retornara:
Hola mundo. Adios mundo.
Y se llama: Pasar por referencia.

¿ Muy útil verdad ?

A tener en cuenta

Tened en cuenta que si decido hacer unset($foo), $bar seguirá teniendo contenido.
<?php
$foo = 'Hola mundo.';
$bar = &$foo;
unset($foo);
echo $bar;
?>
Esto se debe a que el contenido y el nombre de la variable para PHP son 2 cosas totalmente distintas e independientes. Así, para borrar ese contenido, debemos hacer:
<?php unset($foo,$bar); ?>

Espero que os sirva.
Saludos

Comentarios

Entradas populares de este blog