Ответ 1
Его оператор двойной толчки ::
(см. список парсера жетоны).
Есть ли у кого T_PAAMAYIM_NEKUDOTAYIM
?
Его оператор двойной толчки ::
(см. список парсера жетоны).
Google творит чудеса.
Он Hebrew для "двойной двоеточия".
Его имя для оператора ::
в PHP. Это буквально означает "двойная двоеточие". По какой-то причине они назвали это на иврите. Проверьте свой синтаксис кода и поместите ::
, где это необходимо: -)
От 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 решила назвать. Это на самом деле означает двойную двоеточие - на иврите!
Это также происходит, когда вы применяете константу в 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
Это может произойти на foreachs при использовании:
foreach( $array as $key = $value )
вместо
foreach( $array as $key => $value )
Как указано здесь, вам, как правило, нужно 5.3. Однако я сломал все страницы, удалив эту строку из нашего файла .htaccess.
# Use PHP 5.3
AddHandler application/x-httpd-php53 .php
Возможно, это как-то полезно.