6. Ampliando

Playmobil recogiendo basura
Imagen en Pixabay de jackmac34 con licencia CC0 Public Domain

Ya comentamos que cuando se hace uso de la orientación a objetos, el programador utiliza instrucciones tanto para crear objetos (new) como para destruirlos (unset). Estas instrucciones permiten que el programador tenga la posibilidad de tratar de forma dinámica la memoria, es decir, que sea él mismo el que decida en qué momento del programa se necesita memoria para un objeto y en qué momento ya no es necesaria y por tanto poder liberarse. Por tanto, el uso de los recursos del sistema, en este caso a nivel de memoria, se optimizan en este sentido, ya que la memoria será utilizada de forma más eficiente. Aquí tenemos otra ventaja de la orientación a objetos.

De todas formas, esa posibilidad también hace surgir un riesgo: que el programador no libere la memoria de forma adecuada y sólo haga que su programa requiera más y más memoria sin llegar nunca a liberarla. Surge aquí un problema de "Recolección de basura" (se llama así a la liberación de la memoria ocupada para almacenar datos que ya no son necesarios).

La recolección de basura o garbage collector es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo objeto y la liberará cuando nadie lo esté usando. En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ u Object Pascal, esta característica no existe y la memoria debe desasignarse manualmente, aunque entre los nuevos lenguajes que fueron apareciendo con posterioridad, esta recolección de basura se hace automáticamente, como es el caso de Java por ejemplo.

Curiosidad

Ya has visto en PHP dos métodos especiales: los constructores y los destructores. Como has podido apreciar, son métodos que se utilizan a veces de forma automática porque están ya implementados en el lenguaje y su uso se convierte en transparente incluso para el programador, pero el lenguaje deja la libertad al propio programador de poder implementarlos a su gusto. Por este motivo, a estos métodos a veces se les denomina "métodos mágicos". En PHP no solo existen estos dos métodos mágicos, hay muchos más, puedes echarle un vistazo consultando la documentación oficial de PHP, haz clic aquí para ello.