Paamayim Nekudotayim Y La Palabra Final En La Programación Orientada A Objetos

Paamayim Nekudotayim y la palabra final en la programación orientada a objetos

Tal vez te estés preguntando qué coño significa el concepto Paamayim Nekudotayim y lo qué supone para la programación. Pues tranquilo por que en este nuevo capitulo del curso de programación orientada a objetos te lo voy a explicar de forma detallada junto con la palabra reservada final. Un dos por uno en un solo artículo, todo un lujazo 😉

Paamayim Nekudotayim durante el Sabbat

Paamayim Nekudotayim es la traducción hebrea para “doble dos-puntos”, token muy utilizado en la programación para hacer referencia a elementos estáticos, constantes de clase o para sobrescribir las propiedades y los métodos de cualquier clase durante la herencia.

Pero lo mas probable es que estés prestando mas atención a este nombre de difícil memorización que a su significado técnico. Pues bien, la anécdota que hay detrás de el y por que recibe este nombre es una chorrada.

Muchos lenguajes de programación conviven con frameworks específicos para ellos y en PHP no podía ser de otra manera. Si todavía no sabes cuál es la diferencia entre lenguaje de programación y framework recuerda esto. El lenguaje es la base y el framework es un conjunto de herramientas y abstracciones construidas que nos facilitan el trabajar con la base, es decir, el lenguaje de programación.

Siempre ha existido el debate de qué es mejor para un programador si especializarse en un lenguaje o en un framework. Pues bien, sinceramente creo que es mejor dominar un lenguaje debido a que los frameworks están sujetos a modas y sobre todo que si aprendes bien un lenguaje de programación después podrás comprender los mecanismos internos de cualquier framework basado en ese lenguaje.

Te vas a encontrar con muchos gilipollas gurús que se las dan de framework master pero después no tienen ni puta idea de cómo hace la resolución de ámbito el motor del lenguaje, por ejemplo…

Pues bien, que me pierdo, Paamayim Nekudotayim surgió cuando Zeev Suraski y Andi Gutmans creadores del framework Zend Engine tuvieron que nombrar al operador de resolución de ámbito en PHP y como te habrás fijado, estos dos pollos no tienen nombres típicos de Albacete, son israelíes y como es lógico utilizaron su lengua materna para darle nombre a algo en lo que estaban trabajando.

Esa es la historia, fin del tema. Ahora sí, vamos a entrar a nivel de detalle técnico para explicar qué es esto.

Como decía antes, el Paamayim Nekudotayim es la forma que tenemos si queremos hacer referencia y usar ciertos elementos de las clases.

Ya lo has visto anteriormente sobre todo cuando explicábamos qué son las constantes de clase. Cuando defines una constante y la quieres utilizar por narices vas a tener que usar el “doble dos-puntos”. Por ejemplo:

Para pintar el valor de la constante BLOG estamos usando el operador de resolución de ámbito, nuestro querido Paamayim Nekudotayim y a lo mejor te pienses que solo se puede utilizar para acceder a constantes desde fuera de la clase. Pues no. También lo podemos utilizar dentro de la misma clase cuando por ejemplo queremos acceder a elementos estáticos de la misma.


Este ejemplo es muy bueno por que se puede ver que accedemos a elementos estáticos desde dentro y desde fuera de la clase. El primer caso es cuando hacemos una llamada al método cualEsMiBlog desde fuera de la definición de la clase utilizando el Paamayim Nekudotayim ya que el método está definido como estático.

El otro ejemplo es cuando dentro de la definición del método estático estamos accediendo al valor de la constante de clase. Lo hacemos también usando el operador de resolución de ámbito.

Ya tenemos dos elementos que cubren el Paamayim Nekudotayim:

  • Constantes de clase.
  • Elementos estáticos de clase.

Pero todavía queda una tercera aplicación para el “doble dos-puntos” y se utiliza cuando queremos invocar propiedades y métodos de una clase padre desde una clase hija. Mira:

¿Lo ves no? Para poder utilizar el método saluda desde la clase hija, en este ejemplo Gorkamu y PutoAmo es necesario hacer una llamada al método padre utilizando la palabra reservada parent junto con el Paamayim Nekudotayim y seguido del nombre de la propiedad o método que queremos invocar.

¿Sencillito verdad? Venga, pues pasemos ahora al otro concepto de este artículo…

Usando la palabra reservada final

Aunque todavía no he hablado extensamente sobre el concepto de herencia en la programación orientada a objetos ya hemos visto una primera aproximación en este artículo y he puesto varios ejemplos durante la serie de artículos. Sin ir mas lejos en este post hay uno.

Pues bien, cuando salió la versión 5 PHP, de entre todas las novedades que presentó, se introdujo la palabra reservada final y que se utiliza para impedir que una clase hija que forma parte de una arquitectura basada en la herencia pueda sobrescribir el método de su clase padres.

Es como si cogiéramos al motor de PHP y le dijéramos: “Oye cuando vayas a procesar esta clase que hereda de esta otra clase comprueba que la primera contiene este método, este y este pero que en ningún caso tenga el método que tiene la palabra final“.

Si por un casual se te va la pinza y sobrescribes un método que está definido como final, cuando ejecutes el script vas a recibir un bonito pete al igual que ocurre si intentas definir una propiedad como final.

Únicamente las clases y los métodos pueden ser definidos así y para el caso de las clases se aplica el mismo concepto. Si una clase contiene la palabra final implica que ésta no puede ser heredada por nadie.

Es posible que con esta explicación tan chapucera te hayas quedado con cara de WTF así que vamos a ver un ejemplo que seguro que lo entiendes mucho mejor 😉

Pues ahí tenéis el último ejemplo del artículo en el que se perfectamente cómo la ejecución del programa peta si intentas sobrescribir un método declarado como final de una clase padre desde una clase hija y ya solo me queda decir lo que digo siempre al final de los posts.

Si tenéis dudas o queréis hacer alguna pregunta o sugerencia tenéis los comentarios de debajo para ello y si por el contrario eres mas de utilizar las redes sociales hazme llegar tu feedback a través de twittah mediante el siguiente banner.

@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
Paamayim Nekudotayim y la palabra final en la programación orientada a objetos
Author Rating
5

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 *