Bueno... eliminé por error el post que había puesto aquí... así que ahora repito algo de lo que puse.
No es que tenga que ser bueno o malo... depende de la situación. A veces es necesario.
Te puedo poner un ejemplo de cuándo se puede necesitar instanciar por referencia. Supongamos que una clase necesita conservar una referencia de otro objeto o variable:
Código PHP:
$mi_objeto = 0;
class UnaClase{
var $_obj; // Acá guardamos una referencia de un objeto que esta clase necesita.
function UnaClase(&$obj){ // fíjate que tomo el parámetro por referencia
$this->_obj =& $obj; // asigno también por referencia
}
}
// Supongamos que tengo una variable "$mi_objeto" que necesito pasar siempre por referencia.
$instancia_valor = new UnaClase($mi_objeto);
$instancia_referencia =& new UnaClase($mi_objeto);
for($i=1;$i<=5;$i++){
$mi_objeto++;
echo 'La variable $mi_objeto vale : '.$instancia_valor->_obj;
echo '<br />';
echo 'En la instancia por valor el obj vale : '.$instancia_valor->_obj;
echo '<br />';
echo 'En la instancia por referencia el obj vale : '.$instancia_referencia->_obj;
echo '<hr />';
}
Como verás, si queríamos manejar una instancia de $mi_objeto tenemos que instanciar por referencia.
Saludos