wake-up-neo.com

PHP erwartet T_PAAMAYIM_NEKUDOTAYIM?

Hat jemand einen T_PAAMAYIM_NEKUDOTAYIM?

477
Peter Turner

Es ist der Doppelpunkt-Operator :: (siehe Liste der Parser-Token ).

312
Gumbo

Google wirkt Wunder. 

Es ist hebräisch für "Doppelpunkt".

96
patricksweeney

Dies ist ein Name für den ::-Operator in PHP. Es bedeutet wörtlich "Doppelpunkt". Aus irgendeinem Grund nannten sie es auf Hebräisch. Überprüfen Sie Ihre Codesyntax und geben Sie gegebenenfalls einen :: ein :-)

52
Ilya Birman

Aus Wikipedia :

In PHP wird der Operator für die Bereichsauflösung auch als Paamayim .__ bezeichnet. Nekudotayim (hebräisch: פעמיים נקודתיים), was in .__ "Doppelpunkt" bedeutet. Hebräisch.

Der Name "Paamayim Nekudotayim" wurde in der .__ eingeführt. Von Israel entwickelte Zend Engine 0.5 in PHP 3. Obwohl es .__ war. Viele Entwickler, die kein Hebräisch sprechen, sind verwirrend. Wird in PHP 5 verwendet, wie in diesem Beispielfehlermeldung:

$ php -r :: Parse-Fehler: Syntaxfehler, unerwartet T_PAAMAYIM_NEKUDOTAYIM

Ab PHP 5.4 wurden Fehlermeldungen bezüglich des Bereichsauflösungsoperators .__ angezeigt. diesen Namen noch enthalten, aber seine Bedeutung etwas klargestellt haben:

$ php -r :: Parse-Fehler: Syntaxfehler, unerwarteter '::' (T_PAAMAYIM_NEKUDOTAYIM)

Von der offiziellen PHP Dokumentation :

Der Scope-Resolution-Operator (auch Paamayim Nekudotayim genannt) oder in Einfachere Begriffe, der Doppelpunkt, ist ein Token, das den Zugriff auf .__ ermöglicht. statische, konstante und überschriebene Eigenschaften oder Methoden einer Klasse.

Wenn Sie auf diese Elemente außerhalb der Klassendefinition verweisen, verwenden Sie der Name der Klasse.

Ab PHP 5.3.0 ist es möglich, die Klasse mit einem .__ zu referenzieren. Variable. Der Wert der Variablen darf kein Schlüsselwort sein (z. B. "self", "parent" und "static").

Paamayim Nekudotayim scheint zunächst eine seltsame Wahl für .__ zu sein. einen Doppelpunkt benennen. Während des Schreibens der Zend Engine 0.5 (was macht PHP 3), so beschloss das Zend-Team, es zu nennen. Es bedeutet eigentlich Doppelpunkt - auf Hebräisch!

42
John Slegers

Dies kommt auch, wenn Sie eine Konstante in PHP auf die Funktion empty () anwenden:

if (!empty(SOME_CONSTANT)) {

}

Das war mein Fall. Ich habe es mit diesem Problem gelöst:

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

}
9
Max

Für mich geschah dies innerhalb einer Klassenfunktion. 

In PHP 5.3 und höher funktionierte $this::$defaults gut; Als ich den Code auf einen Server vertauschte, der aus irgendeinem Grund eine niedrigere Versionsnummer hatte, warf er diesen Fehler.

In meinem Fall bestand die Lösung darin, anstelle von $this das Schlüsselwort self zu verwenden:

self::$defaults funktioniert einwandfrei.

2
bozdoz

Dies kann bei foreachs passieren, wenn Sie Folgendes verwenden:

foreach( $array as $key = $value )

anstatt

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

So habe ich es bekommen. Ich habe die Grenzen von Ausdrücken in Anführungszeichen ausprobiert. Das ist also der Code:

Code

$a = 5;

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

Ausgabe

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