Clases Anónimas En La Programación Orientada A Objetos

Clases anónimas en la programación orientada a objetos

En los artículos anteriores sobre programación orientada a objetos hemos visto cómo crear nuestras propias clases, con sus propiedades y métodos e instanciarlas. Pues hoy os vengo a contar cómo crear clases anónimas y que usos podemos hacer de ellas que sin duda son muchos, otro pasito mas hacia el dominio de la programación orientada a objetos. Así que vamos para allá…

¿Qué son las clases anónimas?

Las clases anónimas aunque ya existían en otros lenguajes desde hace tiempo, por ejemplo en Java se utiliza mucho, en PHP fueron introducidas en la versión 7. Decíamos que las clases “normales” son las plantillas predefinidas que después crearán objetos con ciertas características y acciones disponibles pues bien, las clases anónimas son un sistema para crear objetos on the fly, es decir objetos sencillos y únicos.

Es decir, si no necesitas tener una entidad o un objeto que persistir o una clase que sea fundamental para tu lógica de negocio, las clases anónimas te pueden servir para tratar algo por un breve periodo de tiempo como un evento por ejemplo. Es decir, utilizaremos clases anónimas cuando necesitemos que se definan y destruyan en tiempo de ejecución ahorrando así en memoria y mejorando el rendimiento de nuestra aplicación.

¿Creo que se entiende no?

Bueno pues las clases anónimas pueden hacer casi las mismas cosas que el resto de clases y esto es:

  • Pueden aceptar argumentos a través de sus constructores.
  • Pueden heredar de otras clases.
  • Pueden implementar interfaces.
  • Pueden utilizar traits.
  • No se define nombre para clase anónima.
  • Todos los objetos creados por una clase anónima son instancias de la misma clase.

Como el tema en general ya es bastante abstracto creo que lo mejor que se puede hacer para entender el concepto de clase anónima es utilizar ejemplos así que…

Como veis en el ejemplo, antes de PHP 7 necesitábamos tener definida una clase Logger ocupando espacio reservado en memoria. Pues bien, con las clases anónimas eso ya no es necesario, se crea la clase cuando es necesario y siempre en tiempo de ejecución.

¿Pero y qué pasa si queremos utilizar argumentos o heredar de una clase o implementar una interfaz como decíamos antes?

Un aspecto importante a tener en cuenta en relación con las clases anónimas es que si tenemos una clase “normal” y metemos (o anidamos) una clase anónima dentro de esta, no podremos utilizar los métodos ni propiedades de la clase “normal” dentro de la anónima pero por suerte existen mecanismos para hacerlo:

  • Si queremos utilizar los métodos y propiedades protegidos de la clase “normal” en la clase anónima tendremos que hacer que la clase anónima herede de la clase “normal”.
  • Si queremos utilizar las propiedades privadas de la clase “normal” dentro de la anónima, tendremos que pasárselos al constructor de la clase anónima.

Fíjate bien en el siguiente ejemplo:

Por último decir que antes os contaba que una clase anónima no define ni tiene nombre, pues era un poquito mentira ya que aunque nosotros no definamos un nombre como tal, las clases anónimas se crean en tiempo de ejecución y es el motor de PHP (digamos compilador) el que se encarga de darle un nombre y una posición en memoria a la que acceder por lo que dónde antes teníamos esto:

echo get_class(new class {});

Internamente tendremos esto:

class@anonymous/in/oNi1A0x7f8636ad2021

Por cierto, no utilicéis este nombre para referenciar, simplemente es un nombre aleatorio basado en un hash que se utiliza internamente. Si tienes necesidad de llamar, referenciar, instanciar una clase anónima es mejor que sigas otra estrategia y te construyas una clase “normal”.

 

Bueno, como se que el tema es bastante jodido para alguien que está empezando a estudiar programación orientada a objetos, si tienes alguna pregunta o necesitas mas ejemplos puedes dejarme tus comentarios un poquito mas abajo o también puedes hacerme llegar tu feedback a través de Twitter mediante el siguiente banner y encantado que estaré de echaros una mano al cuello 😛

@gorkakatua #faqsGorkamu pregúntame por twitter cualquier cosa y vemos cómo lo solucionamos.

Hala a mamarla!

¿Te ha parecido este un artículo de 5 estrellas? Dame tu valoración:
Review Date
Reviewed Item
Clases anónimas en la programación orientada a objetos
Author Rating
51star1star1star1star1star

Gorka Muñoz Andrés

Me llamo Gorka Muñoz y soy un desarrollador melómano. Combino a la perfección la búsqueda de nuevos grupos con la pasión por la tecnología. Desde chiquitito me ha gustado la programación, ahora que soy mayor estoy metido en el mundo del SEO sin olvidarme del /Dev.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *