PHP ожидает T PAAMAYIM NEKUDOTAYIM?

кто-нибудь T_PAAMAYIM_NEKUDOTAYIM?

7 ответов


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


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

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


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


с Википедия:

в PHP оператор разрешения области также называется Paamayim Nekudotayim (иврит: פעמיים נקודתיים), что означает "двойное двоеточие" в Еврей.

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

$ php-r:: Parse error: синтаксическая ошибка, непредвиденная T_PAAMAYIM_NEKUDOTAYIM

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

$ php-r:: Parse error: синтаксическая ошибка, непредвиденная '::' (T_PAAMAYIM_NEKUDOTAYIM)

с официальная документация PHP:

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

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

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

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


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

if (!empty(SOME_CONSTANT)) {

}

это было мое дело. Я решил это, используя это:

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

}

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

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

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

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


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

код

$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