it-swarm.com.ru

PHP ожидает T_PAAMAYIM_NEKUDOTAYIM?

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

477
Peter Turner

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

312
Gumbo

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

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

96
patricksweeney

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

52
Ilya Birman

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

В 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 И static).

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

42
John Slegers

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

if (!empty(SOME_CONSTANT)) {

}

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

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

}
9
Max

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

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

Решение, в моем случае, заключалось в использовании ключевого слова self вместо $this:

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

2
bozdoz

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

foreach( $array as $key = $value )

вместо

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

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

Код

$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
0
peter