Lista de Tokens do Parser

Várias partes da linguagem PHP são representadas internamente por tokens. Um trecho de código que contém uma sequẽncia inválida de tokens podem ocasionar erros como Parse error: syntax error, unexpected token "==", expecting "(" in script.php on line 10." onde o token == é internamente representado pelo identificador T_IS_EQUAL.

A tabela a seguir lista todos os tokens, disponíveis como constantes no PHP.

Nota: Uso das constantes T_*

Os valores das constantes T_* são gerados automaticamente pela infraestrutura do interpretador do PHP, sem estabilidade. Isto significa que o valor real de um token pode mudar entre duas versões do PHP. Isso significa que seu código nunca deve depender diretamente dos valores originais de T_* levando em consideração uma versão específica do PHP, para que seu código funcione em várias versões do PHP.

Para utilizar as constantes T_* entre várias versões do PHP, constantes não definidas podem ser criadas pelo usuário (utilizando-se grandes números, a partir de 10000) como uma estratégia apropriada que funcionará entre versões do PHP e os valores automaticamente definidos.

<?php
// Anteriormente ao PHP 7.4.0, T_FN não era definido.
defined('T_FN') || define('T_FN', 10001);

Tokens
Token Sintaxe Referência
T_ABSTRACT abstract Abstração de Classes
T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG & Declarações de tipo (disponível desde o PHP 8.1.0)
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG & Declarações de tipo (disponível desde o PHP 8.1.0)
T_AND_EQUAL &= operadores de atribuição
T_ARRAY array() array(), sintaxe de array
T_ARRAY_CAST (array) conversão de tipo
T_AS as foreach
T_ATTRIBUTE #[ attributes (a partir do PHP 8.0.0)
T_BAD_CHARACTER   qualquer coisa abaixo de ASCII 32 exceto \t (0x09), \n (0x0a) and \r (0x0d) (disponível a partir do PHP 7.4.0)
T_BOOLEAN_AND && operadores lógicos
T_BOOLEAN_OR || operadores lógicos
T_BOOL_CAST (bool) ou (boolean) conversão de tipos
T_BREAK break break
T_CALLABLE callable callable
T_CASE case switch
T_CATCH catch Exceções
T_CLASS class classes e objetos
T_CLASS_C __CLASS__ constantes mágicas
T_CLONE clone classes e objetos
T_CLOSE_TAG ?> ou %> escapando o HTML
T_COALESCE ?? operadores de comparação
T_COALESCE_EQUAL ??= operadores de assimilação (disponível a partir do PHP 7.4.0)
T_COMMENT // ou #, e /* */ comentários
T_CONCAT_EQUAL .= operadores de atribuição
T_CONST const constantes
T_CONSTANT_ENCAPSED_STRING "foo" ou 'bar' sintaxe de string
T_CONTINUE continue continue
T_CURLY_OPEN {$ sintaxe complexa de parse (chaves)
T_DEC -- operadores de incremento/ decremento
T_DECLARE declare declare
T_DEFAULT default switch
T_DIR __DIR__ constantes mágicas
T_DIV_EQUAL /= operadores de atribuição
T_DNUMBER 0.12, etc. números de ponto flutuante
T_DO do do..while
T_DOC_COMMENT /** */ comentários PHPDoc
T_DOLLAR_OPEN_CURLY_BRACES ${ sintaxe complexa de parse (chaves)
T_DOUBLE_ARROW => sintaxe de array
T_DOUBLE_CAST (real), (double) ou (float) conversão de tipos
T_DOUBLE_COLON :: veja T_PAAMAYIM_NEKUDOTAYIM abaixo
T_ECHO echo echo
T_ELLIPSIS ... argumentos de função
T_ELSE else else
T_ELSEIF elseif elseif
T_EMPTY empty empty()
T_ENCAPSED_AND_WHITESPACE " $a" interpretação de variáveis em strings
T_ENDDECLARE enddeclare declare, sintaxe alternativa
T_ENDFOR endfor for, sintaxe alternativa
T_ENDFOREACH endforeach foreach, sintaxe alternativa
T_ENDIF endif if, sintaxe alternativa
T_ENDSWITCH endswitch switch, sintaxe alternativa
T_ENDWHILE endwhile while, sintaxe alternativa
T_ENUM enum Enumerations (disponível desde o PHP 8.1.0)
T_END_HEREDOC   sintaxe heredoc
T_EVAL eval() eval()
T_EXIT exit ou die exit(), die()
T_EXTENDS extends extends, classes e objetos
T_FILE __FILE__ constantes mágicas
T_FINAL final final
T_FINALLY finally Exceções
T_FN fn função seta (disponível a partir do PHP 7.4.0)
T_FOR for for
T_FOREACH foreach foreach
T_FUNCTION função funções
T_FUNC_C __FUNCTION__ constantes mágicas
T_GLOBAL global escopo de variáveis
T_GOTO goto goto
T_HALT_COMPILER __halt_compiler() __halt_compiler
T_IF if if
T_IMPLEMENTS implements Interfaces de Objetos
T_INC ++ operadores de incremento/decremento
T_INCLUDE include include
T_INCLUDE_ONCE include_once include_once
T_INLINE_HTML   escapando o HTML
T_INSTANCEOF instanceof operadores de tipo
T_INSTEADOF insteadof Traits
T_INTERFACE interface Interfaces de Objetos
T_INT_CAST (int) ou (integer) conversão de tipos
T_ISSET isset() isset()
T_IS_EQUAL == operadores de comparação
T_IS_GREATER_OR_EQUAL >= operadores de comparação
T_IS_IDENTICAL === operadores de comparação
T_IS_NOT_EQUAL != ou <> operadores de comparação
T_IS_NOT_IDENTICAL !== operadores de comparação
T_IS_SMALLER_OR_EQUAL <= operadores de comparação
T_LINE __LINE__ constantes mágicas
T_LIST list() list()
T_LNUMBER 123, 012, 0x1ac, etc. inteiros
T_LOGICAL_AND and operadores lógicos
T_LOGICAL_OR or operadores lógicos
T_LOGICAL_XOR xor operadores lógicos
T_MATCH match match (a partir do PHP 8.0.0)
T_METHOD_C __METHOD__ constantes mágicas
T_MINUS_EQUAL -= operadores de atribuição
T_MOD_EQUAL %= operadores de atribuição
T_MUL_EQUAL *= operadores de atribuição
T_NAMESPACE namespace namespaces
T_NAME_FULLY_QUALIFIED \App\Namespace namespaces (a partir do PHP 8.0.0)
T_NAME_QUALIFIED App\Namespace namespaces (a partir do PHP 8.0.0)
T_NAME_RELATIVE namespace\Namespace namespaces (a partir do PHP 8.0.0)
T_NEW new classes e objetos
T_NS_C __NAMESPACE__ namespaces
T_NS_SEPARATOR \ namespaces
T_NUM_STRING "$a[0]" interpretação de variáveis em strings
T_OBJECT_CAST (object) conversão de tipos
T_OBJECT_OPERATOR -> classes e objetos
T_NULLSAFE_OBJECT_OPERATOR ?-> classes e objetos
T_OPEN_TAG <?php, <? ou <% escapando o HTML
T_OPEN_TAG_WITH_ECHO <?= ou <%= escapando o HTML
T_OR_EQUAL |= operadores de atribuição
T_PAAMAYIM_NEKUDOTAYIM :: ::. Também definido como T_DOUBLE_COLON.
T_PLUS_EQUAL += operadores de atribuição
T_POW ** operadores aritméticos
T_POW_EQUAL **= operadores de atribuição
T_PRINT print print
T_PRIVATE private classes e objetos
T_PROTECTED protected classes e objetos
T_PUBLIC public classes e objetos
T_READONLY readonly classes e objetos (a partir do PHP 8.1.0)
T_REQUIRE require require
T_REQUIRE_ONCE require_once require_once
T_RETURN return retornando valores
T_SL << operador bit-a-bit
T_SL_EQUAL <<= operadores de atribuição
T_SPACESHIP <=> operadores de comparação
T_SR >> operador bit-a-bit
T_SR_EQUAL >>= operadores de atribuição
T_START_HEREDOC <<< sintaxe heredoc
T_STATIC static escopo de variáveis
T_STRING parent, self, etc. identificadores, ex. palavras-chaves tais como parent e self, nomes de função, nomes de classe e outros correspondem a esta categoria. Veja também T_CONSTANT_ENCAPSED_STRING.
T_STRING_CAST (string) conversão de tipos
T_STRING_VARNAME "${a sintaxe complexa de parse (chaves)
T_SWITCH switch switch
T_THROW throw Exceções
T_TRAIT trait Traits
T_TRAIT_C __TRAIT__ __TRAIT__
T_TRY try Exceções
T_UNSET unset() unset()
T_UNSET_CAST (unset) conversão de tipos
T_USE use namespaces
T_VAR var classes e objetos
T_VARIABLE $foo variáveis
T_WHILE while while, do..while
T_WHITESPACE \t \r\n  
T_XOR_EQUAL ^= operadores de atribuição
T_YIELD yield generators
T_YIELD_FROM yield from generators

Veja também token_name().

add a note add a note

User Contributed Notes 2 notes

up
1
nathan at unfinitydesign dot com
16 years ago
T_ENCAPSED_AND_WHITESPACE is whitespace which intersects a group of tokens. For example, an "unexpected T_ENCAPSED_AND_WHITESPACE" error is produced by the following code:

<?php
$main_output_world
= 'snakes!';
echo(
'There are' 10 $main_output_world);
?>

Note the missing concatenation operator between the two strings leads to the whitespace error that is so named above. The concatenation operator instructs PHP to ignore the whitespace between the two code tokens (the so named "encapsed" data"), rather than parse it as a token itself.

The correct code would be:

<?php
$main_output_world
= 'snakes!';
echo(
'There are' . 10 . $main_output_world);
?>

Note the addition of the concatenation operator between each token.
up
-2
fgm at osinet dot fr
16 years ago
T_ENCAPSED_AND_WHITESPACED is returned when parsing strings with evaluated content, like "some $value" or this example from the Strings reference page:

<?php
echo <<<EOT
My name is "$name". I am printing some $foo->foo.
Now, I am printing some
{$foo->bar[1]}.
This should print a capital 'A': \x41
EOT;
?>

This last example is tokenized as:
T_ECHO
  echo
T_WHITESPACE
  %20 (a space character)
T_START_HEREDOC
  <<
T_ENCAPSED_AND_WHITESPACE
  My name is "
T_VARIABLE
  $name
T_ENCAPSED_AND_WHITESPACE   
  ". I am printing some
T_VARIABLE   
  $foo
T_OBJECT_OPERATOR   
  ->
T_STRING   
  foo
T_ENCAPSED_AND_WHITESPACE   
  . Now, I am printing some
T_CURLY_OPEN   
  {
T_VARIABLE   
  $foo
T_OBJECT_OPERATOR   
  ->
T_STRING   
  bar
(terminal)
  [
T_LNUMBER   
  1
(terminal)
  ]
(terminal)
  }
T_ENCAPSED_AND_WHITESPACE   
  . This should print a capital 'A': \x41
T_END_HEREDOC
  EOT
(terminal)
  ;
To Top