PHP ожидает T_PAAMAYIM_NEKUDOTAYIM? - PullRequest
498 голосов
/ 26 февраля 2009

У кого-нибудь есть T_PAAMAYIM_NEKUDOTAYIM?

Ответы [ 8 ]

322 голосов
/ 26 февраля 2009

Это оператор двойного двоеточия :: (см. список токенов парсера ).

99 голосов
/ 26 февраля 2009

Google творит чудеса.

Это Иврит для "двойного двоеточия".

52 голосов
/ 26 февраля 2009

Это имя оператора :: в PHP. Это буквально означает «двойное двоеточие». Почему-то они назвали это на иврите. Проверьте синтаксис кода и введите ::, где это необходимо: -)

43 голосов
/ 14 марта 2014

Из Википедия :

В PHP оператор разрешения контекста также называется Paamayim Некудотайим (иврит: פעמיים נקודתיים), что означает «двойное двоеточие» в Иврит.

Название "Paamayim Nekudotayim" было введено в Разработанный Израилем Zend Engine 0.5 используется в PHP 3. Хотя он был сбивает с толку многих разработчиков, которые не говорят на иврите, это все еще используется в PHP 5, как в этом примере сообщения об ошибке:

$ php -r :: Ошибка разбора: синтаксическая ошибка, неожиданная T_PAAMAYIM_NEKUDOTAYIM

Начиная с PHP 5.4, сообщения об ошибках, касающиеся оператора разрешения области до сих пор включают это имя, но несколько уточнили его значение:

$ php -r :: Ошибка разбора: синтаксическая ошибка, неожиданное '::' (T_PAAMAYIM_NEKUDOTAYIM)

Из официальной документации PHP :

Оператор разрешения области (также называемый Paamayim Nekudotayim) или в Проще говоря, двойное двоеточие, это токен, который позволяет получить доступ к статические, постоянные и переопределенные свойства или методы класса.

При обращении к этим элементам вне определения класса используйте Название класса.

Начиная с PHP 5.3.0, можно ссылаться на класс, используя переменная. Значение переменной не может быть ключевым словом (например, self, parent и статика).

Paamayim Nekudotayim, на первый взгляд, показался бы странным выбором для называя двойное двоеточие. Однако при написании Zend Engine 0.5 (который поддерживает PHP 3), именно так команда Zend решила это назвать. Это на самом деле означает двоеточие - на иврите!

10 голосов
/ 22 ноября 2014

Это также происходит, когда вы применяете константу в PHP к функции empty ():

if (!empty(SOME_CONSTANT)) {

}

Это был мой случай. Я решил это с помощью этого:

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

}
2 голосов
/ 12 июля 2016

Для меня это произошло внутри функции класса.

В PHP 5.3 и выше $this::$defaults работало нормально; когда я поменял код на сервер, который по какой-либо причине имел меньший номер версии, он выдал эту ошибку.

В моем случае решение состояло в том, чтобы использовать ключевое слово self вместо $this:

self::$defaults отлично работает.

0 голосов
/ 08 октября 2018

Это может произойти на foreachs при использовании:

foreach( $array as $key = $value )

вместо

foreach( $array as $key => $value )
0 голосов
/ 30 сентября 2016

Вот так я и получил. Я пробовал пределы выражений в двойных кавычках. Так что это код:

код

$a = 5;

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

выход

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