elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Referencias en PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Referencias en PHP  (Leído 2,749 veces)
madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



Ver Perfil WWW
Referencias en PHP
« en: 4 Junio 2011, 00:01 am »

Algunos de los que hayan leído sobre este tema, seguramente habrán confundido las referencias con los punteros de C/C++. En realidad no es así, mientras que los punteros apuntan a una dirección de memoria específica, las referencias le están diciendo al interprete de PHP que vamos a usar el contenido de una variable con diferentes nombres.

Veamos un ejemplo:

Código
  1. <?php
  2.    $var1 = "valor";
  3.    $var2 =& $var1;
  4.  
  5.    echo $var2; //imprime: valor
  6. ?>
  7.  

Como vemos, la variable $var1 contiene la cadena "valor", en el siguiente caso la variable $var2 apunta al contenido/valor de la variable $var1. Por lo que, si cambiamos el valor de $var2 también cambiará el de $var1.

Código
  1. <?php
  2.    $var1 = "valor";
  3.    $var2 =& $var1;
  4.  
  5.    $var2 = "nuevo valor";
  6.    echo $var1;//imprime: nuevo valor
  7. ?>
  8.  

La mayoría de los programadores PHP emplean las referencias en OOP para ahorrar recursos. Otro ejemplo para comprender las referencias usando valores numéricos, es el siguiente:

Código
  1. <?php
  2.    $b=5; $d=7;
  3.    $a =& $b;
  4.    $c =& $d;
  5.    //Ahora: a=b=5; c=d=7;
  6.    $b =& $c;
  7.    //Ahora: a=5, b=c=d=7;
  8. ?>
  9.  

Esto no se limita aquí, se puede pasar parámetros por referencia, devolver referencias, destruirlas y ubicarlas. Un claro ejemplo de como devolver referencias es el de abajo:

Código
  1. <?php
  2.    class foo {
  3.        public $valor = 42;
  4.  
  5.        public function &obtenerValor() {
  6.            return $this->valor;
  7.        }
  8.    }
  9.  
  10.    $obj = new foo;
  11.    $miValor = &$obj->obtenerValor();
  12.    // $miValor es una referencia a $obj->valor, que es 42.
  13.    $obj->valor = 2;
  14.    echo $miValor;
  15.    // imprime el nuevo valor de $obj->valor, esto es, 2.
  16. ?>
  17.  

Para destruir una referencias se utiliza la función unset($referencia). Actualmente no son muy empleadas, pero si algunas vez os las encontráis en algún código, sabréis cuál es su uso.

Para más información os recomiendo leer el apartado de referencias de php.net.


En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Referencias
Programación Visual Basic
Sancho.Mazorka 2 2,706 Último mensaje 1 Enero 2007, 08:35 am
por Sancho.Mazorka
Referencias a objetos
Java
zardanic 2 3,324 Último mensaje 13 Mayo 2008, 21:25 pm
por zardanic
Dudas con las referencias
Programación C/C++
Dark Invader 5 3,221 Último mensaje 27 Julio 2011, 13:37 pm
por Dark Invader
Problema al buscar Referencias en la IAT
Ingeniería Inversa
.:UND3R:. 2 2,772 Último mensaje 15 Agosto 2011, 07:21 am
por apuromafo CLS
Problema con Referencias
Ingeniería Inversa
KarlBluet 0 2,377 Último mensaje 21 Septiembre 2011, 00:06 am
por KarlBluet
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines