Pregunta

Con PHP5 usando "Copiar en la escritura" y pasar por referencia causando más de una penalización de rendimiento que una ganancia, ¿por qué debería usar pasar por referencia? Aparte de las funciones de devolución de llamadas que devolverían más de un valor o clases cuyas atributos desee ser alterable sin llamar a una función establecida más adelante (mala práctica, lo sé), ¿hay algún uso que me falte?

¿Fue útil?

Solución

Utiliza pasar por referencia cuando desea modificar el resultado y eso es todo lo que hay.

Recuerde también que en los objetos PHP están siempre Pase por referencia.

Personalmente, encuentro el sistema de PHP de copiar valores implícitamente (supongo que defender contra la modificación accidental) es engorroso e inintuitivo, pero, de nuevo, comencé en idiomas fuertemente escrillos, lo que probablemente explica eso. Pero me parece interesante que los objetos difieran de la operación normal de PHP y lo tomo como evidencia de que el mecanismo de copia implícito de PHP realmente no es un buen sistema.

Otros consejos

¿Una función recursiva que llena una matriz? Recuerde escribir algo así, una vez.

No tiene sentido tener cientos de copias de una matriz parcialmente llena y copia, empalmando y uniendo piezas a cada paso.

Incluso al pasar objetos hay una diferencia.

Prueba este ejemplo:

class Penguin { }

$a = new Penguin();

function one($a)
{
  $a = null;
}

function two(&$a)
{
  $a = null;
}

var_dump($a);
one($a);
var_dump($a);
two($a);
var_dump($a);

El resultado será:

object(Penguin)#1 (0) {}
object(Penguin)#1 (0) {}
NULL

Cuando pasa una variable que contiene una referencia a un objeto por referencia, puede modificar la referencia al objeto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top