unexpected parse error end php syntax-error runtime-error

parse - php syntax error unexpected ''=''



PHP espera que T_PAAMAYIM_NEKUDOTAYIM? (8)

Así es como lo conseguí. Estaba probando los límites de las expresiones entre comillas dobles. Así que este es el código:

Código

$a = 5; echo "{$a == 5 ? ''yes'' : ''no''} its possible";

Salida

PHP Parse error: syntax error, unexpected ''=='' (T_IS_EQUAL), expecting :: (T_PAAMAYIM_NEKUDOTAYIM) in php shell code on line 1

¿Alguien tiene un T_PAAMAYIM_NEKUDOTAYIM ?


De Wikipedia :

En PHP, el operador de resolución de alcance también se llama Paamayim Nekudotayim (hebreo: פעמיים נקודתיים), que significa "doble colon" en hebreo.

El nombre "Paamayim Nekudotayim" se introdujo en Zend Engine 0.5, desarrollado por Israel, utilizado 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, T_PAAMAYIM_NEKUDOTAYIM inesperado

A partir de PHP 5.4, los mensajes de error relativos al operador de resolución de alcance aún incluyen este nombre, pero han aclarado su significado de alguna manera:

$ 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, el doble colon, 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 parecería, al principio, una elección extraña para nombrar un doble colon. Sin embargo, mientras escribía Zend Engine 0.5 (que funciona con PHP 3), así es como el equipo de Zend decidió llamarlo. En realidad significa doble colon, ¡en hebreo!



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 coloque un :: donde corresponda :-)


Esto puede suceder en foreachs cuando se usa:

foreach( $array as $key = $value )

en lugar de

foreach( $array as $key => $value )


Esto también viene cuando se 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)) { }


Google hace maravillas.

Es el Hebrew para "doble colon".


Para mí esto sucedió dentro de una función de clase.

En PHP 5.3 y por encima de $this::$defaults funcionó bien; cuando cambié el código a un servidor que, por alguna razón, tenía un número de versión más bajo, arrojó este error.

La solución, en mi caso, fue usar la palabra clave self lugar de $this :

self::$defaults funciona bien.