PHP espera T_PAAMAYIM_NEKUDOTAYIM?
-
09-09-2019 - |
Pergunta
Alguém tem uma T_PAAMAYIM_NEKUDOTAYIM
?
Solução
É o operador dois pontos duplo ::
(veja lista de analisador fichas ).
Outras dicas
O Google faz maravilhas.
É hebraico para "double cólon".
É um nome para o operador ::
em PHP. É, literalmente, significa "dois pontos duplo". Por alguma razão eles chamado em hebraico. Verifique a sua sintaxe do código, e colocar um ::
caso existam: -)
A partir Wikipedia :
Em PHP, o operador de resolução de escopo é também chamado Paamayim Nekudotayim (Hebrew: ?????? ????????), o que significa “duplo con” em Hebraico.
O nome "Paamayim Nekudotayim" foi introduzido no Israelo-desenvolvido Zend Engine 0.5 usado no PHP 3. Embora tenha sido confuso para muitos desenvolvedores que não falam hebraico, ainda é sendo usado em PHP 5, como neste mensagem de erro exemplo:
$ php -r :: Parse erro: erro de sintaxe, inesperado T_PAAMAYIM_NEKUDOTAYIM
A partir do PHP 5.4, mensagens de erro relativa ao operador de resolução de escopo ainda incluem este nome, mas ter esclarecido seu significado um pouco:
$ php -r :: Parse erro: erro de sintaxe, inesperado '::' (T_PAAMAYIM_NEKUDOTAYIM)
A partir a documentação PHP oficial :
O Âmbito resolução Operator (também chamado Paamayim Nekudotayim) ou em termos mais simples, a dupla do cólon, é um token que permite o acesso a estáticos, constantes, e substituídos propriedades ou métodos de uma classe.
Ao fazer referência a esses itens de fora da definição de classe, o uso o nome da classe.
A partir do PHP 5.3.0, é possível fazer referência a classe usando um variável. O valor da variável não pode ser uma palavra-chave (por exemplo, auto, pai e estático).
Paamayim Nekudotayim, à primeira, parecer uma escolha estranha para nomear um duplo cólon. No entanto, ao escrever o Zend Engine 0.5 (Que poderes PHP 3), que é o que a equipe Zend decidiu chamá-lo. isto realmente significa duplo dois pontos - em hebraico
Isto também está chegando quando você aplica uma constante em PHP para a função empty ():
if (!empty(SOME_CONSTANT)) {
}
Esse foi o meu caso. Eu resolvi-lo usando o seguinte:
$string = SOME_CONSTANT;
if (!empty($string)) {
}
Para mim, isso aconteceu dentro de uma função de classe.
No PHP 5.3 e acima $this::$defaults
funcionou bem; quando eu troquei o código em um servidor que, por qualquer motivo tinha um número de versão menor que jogou este erro.
A solução, no meu caso, era usar a palavra-chave self
vez de $this
:
self::$defaults
funciona muito bem.
Isso pode acontecer em foreachs ao usar:
foreach( $array as $key = $value )
em vez de
foreach( $array as $key => $value )
Como foi dito aqui, você geralmente precisa de 5,3. No entanto, a forma como eu quebrei todas as páginas foi removendo essa linha do nosso arquivo .htaccess.
# Use PHP 5.3
AddHandler application/x-httpd-php53 .php
Talvez esta seja de uso de alguma forma.