El Paamayim nekudotayim de PHP

No, este título tan raro no es producto de un deface de algún hacker indio. Es hebreo (פעמיים נקודתיים), significa doble dos puntos, y es el nombre que recibe el token utilizado por el analizador léxico y el analizador sintáctico de PHP para representar el operador de resolución de ámbito del lenguaje (::), un operador que se utiliza para acceder a miembros estáticos de una clase, y a propiedades y métodos que han sido sobreescritos por una clase al heredar de otra.

«¿Y por qué hebreo?», se preguntará alguno. El motivo es sencillo, y es que, como ya vimos en Una no tan breve historia de PHP, Zeev Suraski y Andi Gutmans, los dos programadores que crearon el Zend Engine, son ambos israelíes.

Os podéis encontrar con este nombre tan críptico, por ejemplo, al utilizar el operador condicional ternario y repetir el carácter de dos puntos por accidente. Si probáis a ejecutar el siguiente código:

<?php
$modo = $_SERVER['SERVER_NAME']!=='localhost'?'Debug'::'Producción';

PHP os responderá con un mensaje parecido a este:

Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in /usr/local/apache/htdocs/ejemplo.php on line 2



10 comentarios en «El Paamayim nekudotayim de PHP»

    1. Hombre, teniendo en cuenta que es sólo un ejemplo, y de algo que no funciona…

      De todas formas, no se imprime, ni se utiliza en ninguna consulta, ni nada parecido. De poco iba a servir un filtro. Lo que habría que hacer es asegurarse de que UseCanonicalName no esté desactivado. Pero bien visto, no se puede uno fiar ni de los valores de $_SERVER.

      Aprovecho para dejar un par de artículos que escribí sobre exploits en PHP para el que le interese, por cierto:
      XSS
      Local y remote file inclusion

  1. Genial, ahora que voy a aprender PHP, cuando me aparezca ese tipo de error, poner :: sin querer, ya sabré lo que significa y no tendré que preguntarlo.

    Un saludo. Ah, por cierto, me alegro de haber encontrado este blog con tantísimas cosas curiosas:D

    1. ¿Eh?

      israelí.
      1. adj. Natural de Israel. U. t. c. s.
      2. adj. Perteneciente o relativo a este país de Asia.

      israelita.
      (Del lat. bíblico Israelīta).
      1. adj. hebreo (‖ del pueblo semítico que conquistó y habitó la Palestina). Apl. a pers., u. t. c. s.
      2. adj. Perteneciente o relativo al que profesa la ley de Moisés.
      3. adj. Natural de Israel. U. t. c. s.
      4. adj. Perteneciente o relativo a este antiguo reino.

  2. Pingback: El Paamayim nekudotayim de PHP « Ingenieria de Software

  3. Pingback: El Paamayim nekudotayim de PHP - XperienciaWeb

Responder a gerardo Cancelar respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.