Hola,
Yo no haria uso de referencias (que no son punteros). No las suelo usar, pero:
Código PHP:
$producto = &$_SESSION['productos'];
....
$_SESSION['productos'] = &$producto;
me parece que es equivalente a pisar el array $_SESSION['productos'] con la referencia a la variable $producto.
En teoria (ya te digo que no uso mucho las referencias), la asignacion final:
Código PHP:
$_SESSION['productos'] = &$producto;
no es necesaria. Podrias comprobarlo sustituyendolo por:
Código PHP:
foreach($_SESSION['productos'] as $puntero)
{
echo "<br><b>Producto:</b> ".$puntero->nombre;
//aki si pongo $puntero, no me da error, me dice que
//que es un objeto
}
para ver si añade el nuevo articulo a $_SESSION. O al menos es lo que pasaria con los punteros de C.
Saludos.