653 Stimmen

PHP erwartet T_PAAMAYIM_NEKUDOTAYIM?

Hat jemand ein T_PAAMAYIM_NEKUDOTAYIM?

26 Stimmen

Manchmal ist dies die Art und Weise von PHP, Ihnen zu sagen, dass Ihnen ein $-Zeichen fehlt... zum Beispiel, wenn Sie _SESSION["foo"] anstelle von $_SESSION["foo"] schreiben.

0 Stimmen

Ich weiß, das ist eine alte Frage, aber die kurze Antwort ist, dass PHP eine Konstante als Klassenname (falsch) interpretiert. Einige Operationen, wie empty, werten Ausdrücke nicht aus, die Konstanten enthalten. Daher versuchen sie, eine Konstante als Klassenname zu interpretieren und erwarten, dass sie ein :: hat, um eine statische Eigenschaft anzugeben. Und natürlich, wenn Sie das $ bei einer Variablen vergessen, wird es als Konstante fehlinterpretiert. Vieles von diesem Wahnsinn, wenn auch nicht die Fehlermeldung, wird in späteren Versionen von PHP behoben.

386voto

Gumbo Punkte 617646

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

11 Stimmen

Nicht wirklich. Teste dies var_dump(empty(TRUE))

3 Stimmen

Nein. Ich habe nur eine Bewertung hinzugefügt, die dasselbe T_PAAMAYIM_NEKUDOTAYIM zurückgibt. Ich habe es versehentlich gefunden.

1 Stimmen

Es wird angezeigt, wenn $ aus der Variablen fehlt. Ich habe es heute bekommen und diesen Beitrag erreicht. In einem foreach($cats as cat) dann zeigt die Verwendung der gleichen cat in der nächsten Zeile den Fehler. Aber die Antwort sagt etwas über :: aus und die Person hat es akzeptiert....??

151voto

patricksweeney Punkte 3634

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

100 Stimmen

PHP - die einzige Sprache, in der du nur eine Fehlermeldung auf Hebräisch hinzufügen kannst und die Leute deinen Commit akzeptieren.

38 Stimmen

@MattiVirkkunen Perplexing Hebrew Parser.

1 Stimmen

Ich glaube nicht, dass sie jemanden brauchten, um ihren Commit zu genehmigen (:

65voto

Ilya Birman Punkte 9114

Es ist ein Name für den :: Operator in PHP. Es bedeutet buchstäblich "Doppelpunkt". Aus irgendeinem Grund haben sie es auf Hebräisch benannt. Überprüfen Sie Ihre Codesyntax und setzen Sie dort ein :: wo es angemessen ist :-)

1 Stimmen

Funktionen sind auf Englisch, aber dieser Fehler ist auf Hebräisch. Ich bin mir nicht sicher, ob andere Fehler auch auf Hebräisch sind.

31 Stimmen

Die hervorgehobene Zeichenfolge lautet. Von nun an werde ich nur noch meine benutzerdefinierte array_push Funktion _ in Hebräischen Zeichen verwenden, natürlich. Ich bin sicher, dass alle meine nicht-hebräisch sprechenden Kollegen es lieben werden. Fast unser gesamtes Entwicklerteam spricht mindestens eine Sprache, die in nicht-lateinischen Zeichen geschrieben ist. Sollte Spaß machen :)

1 Stimmen

@Ilya Birman Es bedeutet nicht wörtlich "doppelter Doppelpunkt"; es bedeutet buchstäblich "zweimal, doppelter Punkt"

58voto

John Slegers Punkte 41127

Von Wikipedia:

In PHP wird der Bereichsauflösungsoperator auch Paamayim Nekudotayim genannt, was auf Hebräisch " " bedeutet und "Doppelpunkt" bedeutet.

Der Name "Paamayim Nekudotayim" wurde in der von Israelis entwickelten Zend Engine 0.5 eingeführt, die in PHP 3 verwendet wurde. Obwohl es für viele Entwickler, die kein Hebräisch sprechen, verwirrend war, wird es immer noch in PHP 5 verwendet, wie in dieser Beispielfehlermeldung:

$ php -r :: Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM

Ab PHP 5.4 enthalten Fehlermeldungen bezüglich des Bereichsauflösungsoperators immer noch diesen Namen, haben jedoch seine Bedeutung etwas klargestellt:

$ php -r :: Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM)

Von der offiziellen PHP-Dokumentation:

Der Bereichsauflösungsoperator (auch Paamayim Nekudotayim genannt) oder in einfacheren Begriffen der Doppelpunkt, ist ein Token, das den Zugriff auf statische, konstante und überschriebene Eigenschaften oder Methoden einer Klasse ermöglicht.

Wenn auf diese Elemente außerhalb der Klassendefinition verwiesen wird, verwenden Sie den Klassennamen.

Ab PHP 5.3.0 ist es möglich, auf die Klasse unter Verwendung einer Variablen zu verweisen. Der Wert der Variablen kann kein Schlüsselwort sein (z.B. self, parent und static).

Paamayim Nekudotayim würde zunächst wie eine seltsame Wahl für die Benennung eines Doppelpunkts erscheinen. Beim Schreiben der Zend Engine 0.5 (die PHP 3 antreibt) entschied sich das Zend-Team jedoch dafür, es so zu nennen. Es bedeutet tatsächlich Doppelpunkt - auf Hebräisch!

2 Stimmen

Es handelt sich tatsächlich um umgangssprachliches Hebräisch. Wikipedia sagt jetzt: "In PHP wird der Bereichsauflösungsoperator auch Paamayim Nekudotayim (Hebräisch: , ausgesprochen [paamajim nkudotajim], wobei das zweite Wort eine umgangssprachliche Verfälschung von , das [nkudatajim] ausgesprochen wird), genannt, was auf Hebräisch „doppelter Doppelpunkt“ bedeutet."

25voto

Sapphire_Brick Punkte 1352

Ich kenne Hebräisch ziemlich gut, also um den Namen "Paamayim Nekudotayim" für dich zu klären, ist die sinngemäße Übersetzung "doppelter Doppelpunkt", aber wörtlich übersetzt:

  • "Paamayim" bedeutet "zwei" oder "zweimal"
  • "Nekudotayim" bedeutet "Punkte" (wörtlich "Löcher")
    • In der hebräischen Sprache bedeutet eine nekuda einen Punkt.
    • Der Plural ist nekudot, d.h. Punkte, die als Vokale funktionieren
    • Der Grund warum es Nekudo-tayim genannt wird, liegt darin, dass das Suffix "-ayim" auch "zwei" oder "zweimal" bedeutet, somit bedeutet :: "zweimal, zwei Punkte" oder bekannter als der Scope Resolution Operator.

2 Stimmen

Was meinen Sie mit "Punkten, die wie Vokale im Englischen funktionieren"? Die "Nekudot" hier repräsentieren die beiden Punkte, aus denen ein Doppelpunkt (:) besteht. Beziehen Sie sich auf Niqqud? Dieses Konzept ist nicht verwandt, obwohl beide Wörter die gleiche Wurzel haben.

1 Stimmen

Auch der Suffix "-ayim" bedeutet zweimal, "Paam" bedeutet Mal. Also bedeutet "Paamayim" zweimal oder zweimal. "Nekuda" ist ein Punkt, und "Nekudot" ist der Plural von "Nekuda" - viele Punkte. Hier bedeutet der Suffix "-ayim" wieder "zweimal". Also bekommen wir: Zweimal viele Punkte zweimal - ergibt nicht viel Sinn... Der Grund dafür ist, dass "Nekudotaym" tatsächlich die falsche Schreibweise und Aussprache des Wortes ist. Es handelt sich um einen Fehler, der von den PHP-Entwicklern gemacht wurde. Es sollte "Nekudatayim" sein - was bedeutet, zweimal ein "Nekuda" oder zwei Punkte. Also bedeutet es tatsächlich: Zweimal zwei Punkte, was viel mehr Sinn macht.

0 Stimmen

@Sipo Ich versuchte, die technischen Details zu vermeiden. Nekudot () sind Vokale. In Bezug auf deinen zweiten Punkt, der Tippfehler im Wort ist ein weiteres nicht zusammenhängendes Problem mit der Fehlermeldung.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X