PHP expects T_PAAMAYIM_NEKUDOTAYIM?
PhpRuntime ErrorSyntax ErrorError CodePhp Problem Overview
Does anyone have a T_PAAMAYIM_NEKUDOTAYIM
?
Php Solutions
Solution 1 - Php
It’s the double colon operator ::
(see list of parser tokens).
Solution 2 - Php
It's Hebrew for "double colon".
Solution 3 - Php
It’s a name for the ::
operator in PHP. It literally means "double colon". For some reason they named it in Hebrew. Check your code syntax, and put a ::
where appropriate :-)
Solution 4 - Php
From Wikipedia:
> In PHP, the scope resolution operator is also called Paamayim > Nekudotayim (Hebrew: פעמיים נקודתיים), which means “double colon” in > Hebrew. > > The name "Paamayim Nekudotayim" was introduced in the > Israeli-developed Zend Engine 0.5 used in PHP 3. Although it has been > confusing to many developers who do not speak Hebrew, it is still > being used in PHP 5, as in this sample error message: > > $ php -r :: Parse error: syntax error, unexpected > T_PAAMAYIM_NEKUDOTAYIM > > As of PHP 5.4, error messages concerning the scope resolution operator > still include this name, but have clarified its meaning somewhat: > > $ php -r :: Parse error: syntax error, unexpected '::' > (T_PAAMAYIM_NEKUDOTAYIM)
From the official PHP documentation:
> The Scope Resolution Operator (also called Paamayim Nekudotayim) or in > simpler terms, the double colon, is a token that allows access to > static, constant, and overridden properties or methods of a class. > > When referencing these items from outside the class definition, use > the name of the class. > > As of PHP 5.3.0, it's possible to reference the class using a > variable. The variable's value can not be a keyword (e.g. self, parent > and static). > > Paamayim Nekudotayim would, at first, seem like a strange choice for > naming a double-colon. However, while writing the Zend Engine 0.5 > (which powers PHP 3), that's what the Zend team decided to call it. It > actually does mean double-colon - in Hebrew!
Solution 5 - Php
I know Hebrew pretty well, so to clarify the name "Paamayim Nekudotayim" for you, the paraphrased meaning is "double colon", but translated literally:
- "Paamayim" means "two" or "twice"
- "Nekudotayim" means "dots" (lit. "holes")
- In the Hebrew language, a nekuda means a dot.
- The plural is nekudot, i.e, dots, which function as vowels
- The reason it why it's called Nekudo-tayim is because the suffix "-ayim" also means "two" or "twice", thus
::
denotes "two times, two dots", or more commonly known as the Scope Resolution Operator.
Solution 6 - Php
This is also coming when you apply a constant in PHP to the empty() function:
if (!empty(SOME_CONSTANT)) {
}
That was my case. I solved it by using this:
$string = SOME_CONSTANT;
if (!empty($string)) {
}
Solution 7 - Php
This can happen on foreachs when using:
foreach( $array as $key = $value )
instead of
foreach( $array as $key => $value )
Solution 8 - Php
Edit: Unfortunately, as of PHP 8.0, the answer is not "No, not anymore". This RFC was not accepted as I hoped, proposing to change T_PAAMAYIM_NEKUDOTAYIM
to T_DOUBLE_COLON
; but it was declined.
Note: I keep this answer for historical purposes. Actually, because of the creation of the RFC and the votes ratio at some point, I created this answer. Also, I keep this for hoping it to be accepted in the near future.
Solution 9 - Php
For me this happened within a class function.
In PHP 5.3 and above $this::$defaults
worked fine; when I swapped the code into a server that for whatever reason had a lower version number it threw this error.
The solution, in my case, was to use the keyword self
instead of $this
:
self::$defaults
works just fine.
Solution 10 - Php
This just happened to me in a string assignment using double quotes. I was missing a closing curly on a POST variable...
"for {$_POST['txtName'] on $date"
;
should have been
"for {$_POST['txtName']} on $date"
;
I can't explain why. I mean, I see the error that would break the code but I don't see why it references a class error.
Solution 11 - Php
This just happened to me in a foreach loop. I had inadvertently typed ($array as $key as $value)
and PHP objected to the first as
.