¿Alguien tiene un T_PAAMAYIM_NEKUDOTAYIM
?
fuente
¿Alguien tiene un T_PAAMAYIM_NEKUDOTAYIM
?
Es el operador de dos puntos ::
(ver lista de tokens de analizador ).
var_dump(empty(TRUE))
foreach($cats as cat
único carácter aceptable después cat
de que una declaración sintácticamente válida es a ::
, ya que le permitiría especificar una propiedad estática de alguna clase llamada cat
. Por ejemplo, si la cat
clase tiene un miembro público estático llamado $mouse
, entonces foreach($cats as cat::$mouse)
es perfectamente válido php
, pero una declaración con cualquier otra cosa que no sea ::
después cat
sería un error de sintaxis. Si $mouse
no fuera una propiedad declarada de cat
usted obtendría un error fatal, pero aún así no un error de sintaxis.
Google hace maravillas.
Es hebreo para "doble colon".
Es un nombre para el ::
operador en PHP. Literalmente significa "doble colon". Por alguna razón lo nombraron en hebreo. Verifique la sintaxis de su código y ponga un ::
lugar apropiado :-)
De Wikipedia :
En PHP, el operador de resolución de alcance también se llama Paamayim Nekudotayim (en hebreo: פעמיים נקודתיים), que significa "doble colon" en hebreo.
El nombre "Paamayim Nekudotayim" se introdujo en el Zend Engine 0.5 desarrollado en Israel que se usa en PHP 3. Aunque ha sido confuso para muchos desarrolladores que no hablan hebreo, todavía se usa en PHP 5, como en este mensaje de error de muestra :
$ php -r :: Error de análisis: error de sintaxis, inesperado T_PAAMAYIM_NEKUDOTAYIM
A partir de PHP 5.4, los mensajes de error relacionados con el operador de resolución de alcance todavía incluyen este nombre, pero han aclarado un poco su significado:
$ php -r :: Error de análisis: error de sintaxis, inesperado '::' (T_PAAMAYIM_NEKUDOTAYIM)
De la documentación oficial de PHP :
El Operador de resolución de alcance (también llamado Paamayim Nekudotayim) o, en términos más simples, los dos puntos dobles, es un token que permite el acceso a propiedades o métodos estáticos, constantes y anulados de una clase.
Cuando haga referencia a estos elementos desde fuera de la definición de clase, use el nombre de la clase.
A partir de PHP 5.3.0, es posible hacer referencia a la clase utilizando una variable. El valor de la variable no puede ser una palabra clave (por ejemplo, self, parent y static).
Paamayim Nekudotayim, al principio, parecería una elección extraña para nombrar un doble punto. Sin embargo, al escribir Zend Engine 0.5 (que funciona con PHP 3), así es como el equipo de Zend decidió llamarlo. En realidad significa dos puntos dobles, ¡en hebreo!
Esto también se produce cuando aplica una constante en PHP a la función empty ():
if (!empty(SOME_CONSTANT)) {
}
Ese fue mi caso. Lo resolví usando esto:
$string = SOME_CONSTANT;
if (!empty($string)) {
}
Sé bastante bien el hebreo, así que para aclarar el nombre "Paamayim Nekudotayim" para usted, el significado parafraseado es "doble colon", pero traducido literalmente:
::
denota "dos veces, dos puntos" o más comúnmente conocido como el Operador de resolución de alcance .Esto puede suceder en foreachs cuando se usa:
foreach( $array as $key = $value )
en vez de
foreach( $array as $key => $value )
Para mí esto sucedió dentro de una función de clase.
En PHP 5.3 y superior $this::$defaults
funcionó bien; cuando cambié el código en un servidor que, por cualquier razón, tenía un número de versión inferior, arrojó este error.
La solución, en mi caso, fue usar la palabra clave en self
lugar de $this
:
self::$defaults
funciona bien
$this
, o lo que le pasó a usted ?
u
. Debería serT_PAAMAYIM_NEKUDOTAYIM
. (PAAMAYIM
= "dos veces",NEKUDOTAYIM
=:
= "נקודותיים")