PHP si aspetta T_PAAMAYIM_NEKUDOTAYIM?
-
09-09-2019 - |
Domanda
Qualcuno ha un T_PAAMAYIM_NEKUDOTAYIM
?
Soluzione
E 'l'operatore doppio colon ::
(vedi elenco di token parser ).
Altri suggerimenti
E 'un nome per l'operatore ::
in PHP. Letteralmente significa "doppio due punti". Per qualche motivo hanno chiamato in ebraico. Controllare la sintassi del codice, e mettere un ::
se del caso: -)
In PHP, l'operatore di risoluzione dell'ambito è anche chiamato Paamayim Nekudotayim (in ebraico: פעמיים נקודתיים), che significa “doppio due punti” in Ebraico.
Il nome "Paamayim Nekudotayim" è stato introdotto nel Israelo-sviluppato Zend Engine 0.5 utilizzato in PHP 3. Anche se è stato fonte di confusione per molti sviluppatori che non parlano l'ebraico, è ancora essere utilizzato in PHP 5, come in questo messaggio di errore di esempio:
$ php -r :: errore di analisi: errore di sintassi, inaspettata T_PAAMAYIM_NEKUDOTAYIM
A partire da PHP 5.4, i messaggi di errore relativo alla operatore di risoluzione dell'ambito ancora includono questo nome, ma hanno chiarito il suo significato in qualche modo:
$ php -r :: errore di analisi: errore di sintassi, inaspettata '::' (T_PAAMAYIM_NEKUDOTAYIM)
la documentazione di PHP ufficiale :
L'Operatore Scope Resolution (chiamato anche Paamayim Nekudotayim) o in termini più semplici, il doppio del colon, è un token che consente l'accesso a proprietà statiche, costanti, e sostituito o metodi di una classe.
Quando si fa riferimento questi elementi al di fuori della definizione della classe, l'uso il nome della classe.
A partire da PHP 5.3.0, è possibile fare riferimento alla classe utilizzando un variabile. Il valore della variabile non può essere una parola chiave (ad esempio auto, genitore e statico).
Paamayim Nekudotayim avrebbe, in un primo momento, sembrare una strana scelta per nominare un doppio due punti. Tuttavia, durante la scrittura del Zend Engine 0.5 (Che PHP 3 potenze), questo è ciò che il team di Zend ha deciso di chiamarlo. esso in realtà significa doppio colon - in ebraico
Questa è anche venuta quando si applica una costante in PHP alla funzione empty ():
if (!empty(SOME_CONSTANT)) {
}
Questo è stato il mio caso. Ho risolto utilizzando questo:
$string = SOME_CONSTANT;
if (!empty($string)) {
}
Per me questo è accaduto all'interno di una funzione di classe.
In PHP 5.3 e sopra $this::$defaults
ha funzionato bene; quando ho scambiato il codice in un server che per qualsiasi motivo ha avuto un numero di versione inferiore ha gettato questo errore.
La soluzione, nel mio caso, è stato quello di utilizzare la parola chiave self
invece di $this
:
self::$defaults
funziona bene.
Questo può accadere in foreachs quando si utilizza:
foreach( $array as $key = $value )
anziché
foreach( $array as $key => $value )
Come detto qui, è generalmente necessario 5.3. Tuttavia, il modo in cui ho rotto tutte le pagine è stato di rimozione di questa linea dal nostro file .htaccess.
# Use PHP 5.3
AddHandler application/x-httpd-php53 .php
Forse questo è utile in qualche modo.