AD

¿Ya dominas lo básico? Un curso estructurado de PHP es la vía rápida para dar el salto.

Ver cursos de PHP en Udemy

Enlace de afiliado. No te cuesta nada extra.

🐘Lecciones de PHP
Lección 40 / 68

Copia superficial y copia profunda

En esta lección verás qué se copia de verdad al asignar y qué no.

En PHP hay una asimetría muy propia del lenguaje: los arrays se copian por valor al asignarlos, pero los objetos se copian por referencia.

El código de ejemplo copia un objeto y lo modifica a través de la copia; el original también cambia.

Esa asimetría es exactamente lo que descoloca. Copiar un array grande crea una copia independiente (aunque PHP lo optimiza internamente y solo copia de verdad al modificarlo), mientras que copiar un objeto deja dos variables apuntando al mismo sitio.

Para duplicar un objeto se usa clone, que hace una copia superficial: si el objeto contiene otros objetos, esos siguen compartidos. Para una copia profunda hay que implementar __clone() y duplicar también lo de dentro. Es una de las fuentes de error más difíciles de diagnosticar, porque el síntoma aparece lejos de la causa.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar PHP directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

🔗 El mismo tema en otros lenguajes

Mira cómo se escribe lo mismo en otro lenguaje.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)