Son dos palabras raras que parece que quieren despistarnos. Y no es inglés, ni japonés, ni ruso… es hebreo.
Y todo se remonta al 1997 cuando Zend Technologies reescribe el motor de PHP planteado por Rasmus Lerdorf.
Zend es una compañía de origen israelí, y de ahí que haya palabras en hebreo.
Pero… qué quiere decir esto ? La traducción es «dobles dos puntos» o lo que es lo mismo «::». Esto es el operador de resolución de contexto (o ámbito) (Scope Resolution Operator en inglés) que tiene PHP y que desde PHP 3 identifica a qué nos referimos; y cuando programamos orientado a objetos, ayudará a PHP a identificar si llamamos a un método, una constante, atributo, etc. (Como C++).
Cuando hacemos Clase::método() para referirnos a un método estático PHP pone en práctica todo esto.
¿Qué pasa cuando hay un error en esta llamada? PHP nos devolverá un error del tipo: «Unexpected T_PAAMAYIM_NEKUDOTAYIM», diciendo que hemos puesto «::» de forma inesperada. Podemos probarlo así desde consola:
$ php -r «::»
Y es que :: tiene la misión de detectar que delante ponemos una clase, o una palabra clave que le haga referencia ($this, self, parent, static…), y luego un método/atributo/constante/… aunque como veremos a continuación hay que tener cuidado con la versión de PHP que se utilice.
Es un error común cuando utilizamos PHP5 (::CODECOLORER_BLOCK_1::
ya que no está soportado en esta versión. En cambio a partir de la 5.3 sí que podremos hacerlo. Mientras tendremos que utilizar call_user_func().
Así que si nos encontramos con este error, querrá decir que PHP no tiene claro a qué nos referimos, a veces lo encontramos cerca de :: pero otras veces no es tan claro, como por ejemplo aquí:
Aquí fallará al hacer la llamada a empty() y es que tenemos que introducirle una variable como parámetro y no una constante (recordemos que el operador de resolución de contexto es el encargado de identificar variables, constantes y todo esto).
Más información:
Scope Resolution Operator [ Wikipedia ]
Ámbito de las variables [ PHP.NET ]
PHP Paamayim Nekudotayim [ The secret’s in the code ]
Pingback: Bitacoras.com /
Ondia! vaya un error extraño, está bien saber de que se trata no vaya a ser de encontrarselo en medio de un proyecto
A mí me pasó y no veas qué gracia. Resulta que estaba creando un proyecto más o menos grande, y yo en mi ordenador tengo instalado PHP 5.3 pero en el servidor tienen PHP 5.0 … total, cuando subí la web, aviso al interesado para que la vea y ve esto. No veas qué gracia…
Pingback: Tweets that mention Poesía binaria » Cuando PHP jura en hebreo (PAAMAYIM NEKUDOTAYIM) — Topsy.com /
Pingback: BlogESfera.com /