PHP attend T_PAAMAYIM_NEKUDOTAYIM?
-
09-09-2019 - |
Question
Quelqu'un at-il un T_PAAMAYIM_NEKUDOTAYIM
?
La solution
Il est l'opérateur double côlon ::
(voir liste des jetons d'analyseur ).
Autres conseils
Il est un nom pour l'opérateur ::
en PHP. Cela signifie littéralement « double deux points ». Pour une raison quelconque, ils l'ont appelé en hébreu. Vérifiez votre syntaxe du code, et mettre un ::
le cas échéant: -)
De Wikipedia :
En PHP, l'opérateur de résolution de portée est également appelée Paamayim Nekudotayim (Hebrew: פעמיים נקודתיים), ce qui signifie « double colon » en Hébreu.
Le nom « Paamayim Nekudotayim » a été introduit dans le Israël développé Zend Engine 0.5 utilisé en PHP 3. Bien qu'il ait été source de confusion pour de nombreux développeurs qui ne parlent pas l'hébreu, il est encore étant utilisé dans PHP 5, comme dans cet exemple un message d'erreur:
$ php -r :: Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM
PHP 5.4, les messages d'erreur concernant l'opérateur de résolution de portée comprennent encore ce nom, mais ont clarifié sa signification un peu:
$ php -r :: Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM)
De la documentation officielle de PHP :
La résolution de portée de l'opérateur (également appelé Paamayim Nekudotayim) ou termes plus simples, le double du côlon, est un jeton qui permet d'accéder à propriétés statiques, constantes, et surchargées ou des méthodes d'une classe.
Lorsque vous faites référence à ces éléments en dehors de la définition de la classe, l'utilisation le nom de la classe.
PHP 5.3.0, il est possible de faire référence à la classe en utilisant une variable. La valeur de la variable ne peut pas être un mot-clé (par exemple l'auto, parent et statique).
Paamayim Nekudotayim serait, tout d'abord, sembler un choix étrange pour nommer un double-virgule. Cependant, lors de l'écriture du Zend Engine 0.5 (PHP 3), c'est ce que l'équipe Zend a décidé de l'appeler. Il en fait ne signifie double deux points - en hébreu
Cela vient également lorsque vous appliquez une constante en PHP à la fonction vide ():
if (!empty(SOME_CONSTANT)) {
}
Ce fut mon cas. Je l'ai résolu en utilisant ceci:
$string = SOME_CONSTANT;
if (!empty($string)) {
}
Pour moi cela est arrivé dans une fonction de classe.
En PHP 5.3 et au-dessus $this::$defaults
a bien fonctionné; quand je troqué le code dans un serveur pour une raison quelconque avait un numéro de version inférieure, il a lancé cette erreur.
La solution, dans mon cas, était d'utiliser le mot-clé self
au lieu de $this
:
self::$defaults
fonctionne très bien.
Cela peut se produire sur foreachs lorsque vous utilisez:
foreach( $array as $key = $value )
au lieu de
foreach( $array as $key => $value )
Comme indiqué ici, vous avez besoin en général 5.3. Cependant, la façon dont je me suis cassé toutes les pages était en supprimant cette ligne de notre fichier .htaccess.
# Use PHP 5.3
AddHandler application/x-httpd-php53 .php
est peut-être utile à une certaine façon.