PHP ожидает T_PAAMAYIM_NEKUDOTAYIM?

421

Есть ли у кого T_PAAMAYIM_NEKUDOTAYIM?

  • 0
    < en.wikipedia.org/wiki/Paamayim_Nekudotayim >
  • 21
    Иногда это способ PHP сказать вам, что вы пропустили знак $ ... например, если вы пишете _SESSION ["foo"] вместо $ _SESSION ["foo"]
Показать ещё 14 комментариев
Теги:
runtime-error
syntax-error

7 ответов

259
Лучший ответ

Его оператор двойной толчки :: (см. список парсера жетоны).

  • 11
    На самом деле, нет. Проверьте это var_dump(empty(TRUE))
  • 1
    @machineaddict Неправильный вопрос / ответ?
Показать ещё 6 комментариев
85

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

Он Hebrew для "двойной двоеточия".

  • 2
    @MattiVirkkunen, а как насчет нового языка, который принимает любую ошибку, фиксирует, синтаксис на любом языке? :) Мы можем сделать это.
  • 0
    Гугл привел меня сюда.
46

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

  • 1
    Функции на английском, но эта ошибка на иврите. Я не уверен, есть ли другие ошибки на иврите, хотя.
  • 15
    Выделите строку להדגיש מחרוזת. Отныне я, конечно, буду использовать мою собственную функцию array_push לדחוף_מערך в иврите. Я уверен, что всем моим коллегам, не говорящим на иврите, это понравится. Почти все наши разработчики говорят по крайней мере на одном языке, написанном не латинскими буквами. Должно быть весело :)
Показать ещё 2 комментария
33

От Wikipedia:

В 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 решила назвать. Это на самом деле означает двойную двоеточие - на иврите!

8

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

if (!empty(SOME_CONSTANT)) {

}

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

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

}
  • 1
    Почему константа будет пустой?
  • 1
    Хороший вопрос: это только для примера, если кто-то еще попал в эту ситуацию с ошибкой, я просто показываю, что это будет возможно :)
Показать ещё 1 комментарий
2

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

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

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

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

1

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

Код

$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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню