PHP ожидает T_PAAMAYIM_NEKUDOTAYIM?

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

Ответы

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

if (!empty(SOME_CONSTANT)) {

}

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

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

}

Ответ 6

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

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

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

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

Ответ 7

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

Код

$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

Ответ 8

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

foreach( $array as $key = $value )

вместо

foreach( $array as $key => $value )

Ответ 9

Как указано здесь, вам, как правило, нужно 5.3. Однако я сломал все страницы, удалив эту строку из нашего файла .htaccess.

# Use PHP 5.3
AddHandler application/x-httpd-php53 .php

Возможно, это как-то полезно.