PHP ожидает T_PAAMAYIM_NEKUDOTAYIM?

Кто-нибудь имеет T_PAAMAYIM_NEKUDOTAYIM ?

    Это оператор двойной кишки :: (см. Список токенов парсера ).

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

    Это иврит для «двойной толстой кишки».

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

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

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

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

    Это также происходит, когда вы применяете константу в 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