web-dev-qa-db-fra.com

PHP attend T_PAAMAYIM_NEKUDOTAYIM?

Est-ce que quelqu'un a un T_PAAMAYIM_NEKUDOTAYIM?

477
Peter Turner

Il s’agit de l’opérateur double-colon :: (voir liste des jetons d’analyseur ).

312
Gumbo

Google fait des merveilles. 

C'est Hebrew pour "double colon".

96
patricksweeney

C’est un nom pour l’opérateur :: en PHP. Cela signifie littéralement "double colon". Pour une raison quelconque, ils l'ont appelé en hébreu. Vérifiez votre syntaxe de code et mettez un :: le cas échéant :-)

52
Ilya Birman

De Wikipedia :

En PHP, l'opérateur de résolution de domaine s'appelle également Paamayim Nekudotayim (hébreu: פעמיים נקודתיים), qui signifie «double colon» en Hébreu.

Le nom "Paamayim Nekudotayim" a été introduit dans le Zend Engine 0.5 développé par Israël et utilisé dans PHP 3. Bien qu'il en ait été déroutant pour beaucoup de développeurs qui ne parlent pas l'hébreu, c'est toujours utilisé dans PHP 5, comme dans cet exemple de message d'erreur:

$ php -r :: erreur d'analyse: erreur de syntaxe, inattendu T_PAAMAYIM_NEKUDOTAYIM

A partir de PHP 5.4, messages d'erreur concernant l'opérateur de résolution d'étendue toujours inclure ce nom, mais en ont clarifié le sens:

$ php -r :: erreur d'analyse: erreur de syntaxe, '::'. inattendu. (T_PAAMAYIM_NEKUDOTAYIM)

Depuis la documentation officielle PHP :

L'opérateur de résolution de portée (également appelé Paamayim Nekudotayim) ou dans termes plus simples, le double deux-points, est un jeton qui permet d’accéder à propriétés ou méthodes statiques, constantes et remplacées d'une classe.

Lorsque vous référencez ces éléments en dehors de la définition de classe, utilisez le nom de la classe.

A partir de PHP 5.3.0, il est possible de référencer la classe en utilisant un variable. La valeur de la variable ne peut pas être un mot clé (par exemple, self, parent Et static).

Paamayim Nekudotayim, au début, semblerait être un choix étrange pour nommer un double-colon. Cependant, lors de l'écriture de Zend Engine 0.5 (qui alimente PHP 3), c'est ce que l'équipe de Zend a décidé d'appeler. Il signifie en réalité double-colon - en hébreu!

42
John Slegers

Cela arrive aussi lorsque vous appliquez une constante dans PHP à la fonction empty ():

if (!empty(SOME_CONSTANT)) {

}

C'était mon cas. Je l'ai résolu en utilisant ceci:

$string = SOME_CONSTANT;
if (!empty($string)) {

}
9
Max

Pour moi, cela s'est passé dans une fonction de classe. 

Dans PHP 5.3 et versions ultérieures, $this::$defaults fonctionnait correctement; lorsque j'ai échangé le code sur un serveur qui, pour une raison quelconque, avait un numéro de version inférieur, cette erreur était renvoyée.

La solution, dans mon cas, consistait à utiliser le mot clé self au lieu de $this:

self::$defaults fonctionne très bien.

2
bozdoz

Cela peut arriver sur les foreachs en utilisant:

foreach( $array as $key = $value )

au lieu de

foreach( $array as $key => $value )
0
Johannes Grandy

C'est comme ça que je l'ai eu. J'essayais les limites des expressions entre guillemets. Donc, voici le code:

Code

$a = 5;

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

Sortie

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