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.
Esto debería retornar:
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.
Pues podemos declarar 2 variables y que las 2 manejen el mismo contenido. Muy útil en funciones. Ademas, podríamos hacer lo siguiente:
Esto retornara:
¿ Muy útil verdad ?
Espero que os sirva.
Saludos
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
Publicar un comentario