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


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

7 454

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 к пустой () функции:

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