Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/11/2008, 06:13
showlnx
 
Fecha de Ingreso: noviembre-2005
Ubicación: /dev/null
Mensajes: 23
Antigüedad: 18 años, 5 meses
Puntos: 0
Diferencias por valor y por referencia

Buenas,
Tengo unas duda existencial, si a una variable le doy el valor de un objeto y esta la edito, no debería afectar a los valor del objeto original, no? En cambio si lo hago por referencia si. A no ser que cuando se trata de objetos en PHP5 siempre se haga por referencia no entiendo que pasa.

Pongo el código de ejemplo porque me da que no me he explicado demasiado bien. $xml es un objeto que contiene una array con un canal Rss.

Si hago un paso por referencia:
Código:
$channel =& $xml->rss->channel; //Aquí lo que comento de asignación por referencia
foreach($channel->item as $item) {
  $item->description = "..."; //Cambiamos valores a description
}
echo "<pre>";
print_r($xml);
echo "</pre>";
El resultado del print_r podemos ver los ... en description, así vemos que aunque hemos modificado $channel también lo ha hecho $xml al ser por referencia. Hasta aquí todo bien.

Pero si lo hacemos por valor esto no debería pasar... Cambiamos
Código:
$channel =& $xml->rss->channel;
por
Código:
$channel = $xml->rss->channel;
Y seguimos viendo que el cambio en description también afecta a $xml.

¿Alguien sabe que puede estar pasando? ¿PHP5 siempre asigna objetos por referencia?