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



Comentarios
  1. Os reto a que pronunciéis “Paamayim nekudotayim” 10 veces seguidas, de carrerilla.

    Responder

    • gerardo

      jajaja, IMPOSIBLE!!!!… mentiras, hay que intentarlo muchas veces… la practica hace al maestro jajaja

      Responder

  2. lolamer

    Os reto a no utilizar variables de entorno sin un filtro 😉

    Responder

    • 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

      Responder

  3. 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

    Responder

  4. Juan Ignacio

    Israelitas*

    Responder

    • ¿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.

      Responder

  5. […] El Paamayim nekudotayim de PHP Obtenido de http://mundogeek.net/archivos/2011/01/29/el-paamayim-nekudotayim-de-php/ […]

    Responder

Deja un comentario