Various parts of the PHP language are represented internally by tokens.
  A code snippet that contains an invalid sequence of tokens may lead to errors like
  Parse error: syntax error, unexpected token "==", expecting "(" in script.php on line 10."
  where token == is internally represented by T_IS_EQUAL.
 
The following table lists all tokens. They are also available as PHP constants.
Note: Usage of T_* constants
T_* constants values are automatically generated based on PHP's underlying parser infrastructure. This means that the concrete value of a token may change between two PHP versions. This means that your code should never rely directly on the original T_* values taken from PHP version X.Y.Z, to provide some compatibility across multiple PHP versions.
To make use of T_* constants across multiple PHP versions, undefined constants may be defined by the user (using big numbers like
10000) with an appropriate strategy that will work with both PHP versions and T_* values.<?php
// Prior to PHP 7.4.0, T_FN is not defined.
defined('T_FN') || define('T_FN', 10001);
| Token | Syntax | Reference | 
|---|---|---|
| T_ABSTRACT | abstract | Class Abstraction | 
| T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG | & | Type declarations (available as of PHP 8.1.0) | 
| T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG | & | Type declarations (available as of PHP 8.1.0) | 
| T_AND_EQUAL | &= | assignment operators | 
| T_ARRAY | array() | array(), array syntax | 
| T_ARRAY_CAST | (array) | type-casting | 
| T_AS | as | foreach | 
| T_ATTRIBUTE | #[ | attributes (available as of PHP 8.0.0) | 
| T_BAD_CHARACTER | anything below ASCII 32 except \t (0x09), \n (0x0a) and \r (0x0d) (available as of PHP 7.4.0) | |
| T_BOOLEAN_AND | && | logical operators | 
| T_BOOLEAN_OR | || | logical operators | 
| T_BOOL_CAST | (bool) or (boolean) | type-casting | 
| T_BREAK | break | break | 
| T_CALLABLE | callable | callable | 
| T_CASE | case | switch | 
| T_CATCH | catch | Exceptions | 
| T_CLASS | class | classes and objects | 
| T_CLASS_C | __CLASS__ | magic constants | 
| T_CLONE | clone | classes and objects | 
| T_CLOSE_TAG | ?> or %> | escaping from HTML | 
| T_COALESCE | ?? | comparison operators | 
| T_COALESCE_EQUAL | ??= | assignment operators (available as of PHP 7.4.0) | 
| T_COMMENT | // or #, and /* */ | comments | 
| T_CONCAT_EQUAL | .= | assignment operators | 
| T_CONST | const | class constants | 
| T_CONSTANT_ENCAPSED_STRING | "foo" or 'bar' | string syntax | 
| T_CONTINUE | continue | continue | 
| T_CURLY_OPEN | {$ | complex variable parsed syntax | 
| T_DEC | -- | incrementing/decrementing operators | 
| T_DECLARE | declare | declare | 
| T_DEFAULT | default | switch | 
| T_DIR | __DIR__ | magic constants | 
| T_DIV_EQUAL | /= | assignment operators | 
| T_DNUMBER | 0.12, etc. | floating point numbers | 
| T_DO | do | do..while | 
| T_DOC_COMMENT | /** */ | PHPDoc style comments | 
| T_DOLLAR_OPEN_CURLY_BRACES | ${ | complex variable parsed syntax | 
| T_DOUBLE_ARROW | => | array syntax | 
| T_DOUBLE_CAST | (real), (double) or (float) | type-casting | 
| T_DOUBLE_COLON | :: | see T_PAAMAYIM_NEKUDOTAYIMbelow | 
| T_ECHO | echo | echo | 
| T_ELLIPSIS | ... | function arguments | 
| T_ELSE | else | else | 
| T_ELSEIF | elseif | elseif | 
| T_EMPTY | empty | empty() | 
| T_ENCAPSED_AND_WHITESPACE | " $a" | constant part of string with variables | 
| T_ENDDECLARE | enddeclare | declare, alternative syntax | 
| T_ENDFOR | endfor | for, alternative syntax | 
| T_ENDFOREACH | endforeach | foreach, alternative syntax | 
| T_ENDIF | endif | if, alternative syntax | 
| T_ENDSWITCH | endswitch | switch, alternative syntax | 
| T_ENDWHILE | endwhile | while, alternative syntax | 
| T_ENUM | enum | Enumerations (available as of PHP 8.1.0) | 
| T_END_HEREDOC | heredoc syntax | |
| T_EVAL | eval() | eval() | 
| T_EXIT | exit or die | exit(), die() | 
| T_EXTENDS | extends | extends, classes and objects | 
| T_FILE | __FILE__ | magic constants | 
| T_FINAL | final | Final Keyword | 
| T_FINALLY | finally | Exceptions | 
| T_FN | fn | arrow functions (available as of PHP 7.4.0) | 
| T_FOR | for | for | 
| T_FOREACH | foreach | foreach | 
| T_FUNCTION | function | functions | 
| T_FUNC_C | __FUNCTION__ | magic constants | 
| T_GLOBAL | global | variable scope | 
| T_GOTO | goto | goto | 
| T_HALT_COMPILER | __halt_compiler() | __halt_compiler | 
| T_IF | if | if | 
| T_IMPLEMENTS | implements | Object Interfaces | 
| T_INC | ++ | incrementing/decrementing operators | 
| T_INCLUDE | include() | include | 
| T_INCLUDE_ONCE | include_once() | include_once | 
| T_INLINE_HTML | text outside PHP | |
| T_INSTANCEOF | instanceof | type operators | 
| T_INSTEADOF | insteadof | Traits | 
| T_INTERFACE | interface | Object Interfaces | 
| T_INT_CAST | (int) or (integer) | type-casting | 
| T_ISSET | isset() | isset() | 
| T_IS_EQUAL | == | comparison operators | 
| T_IS_GREATER_OR_EQUAL | >= | comparison operators | 
| T_IS_IDENTICAL | === | comparison operators | 
| T_IS_NOT_EQUAL | != or <> | comparison operators | 
| T_IS_NOT_IDENTICAL | !== | comparison operators | 
| T_IS_SMALLER_OR_EQUAL | <= | comparison operators | 
| T_LINE | __LINE__ | magic constants | 
| T_LIST | list() | list() | 
| T_LNUMBER | 123, 012, 0x1ac, etc. | integers | 
| T_LOGICAL_AND | and | logical operators | 
| T_LOGICAL_OR | or | logical operators | 
| T_LOGICAL_XOR | xor | logical operators | 
| T_MATCH | match | match (available as of PHP 8.0.0) | 
| T_METHOD_C | __METHOD__ | magic constants | 
| T_MINUS_EQUAL | -= | assignment operators | 
| T_MOD_EQUAL | %= | assignment operators | 
| T_MUL_EQUAL | *= | assignment operators | 
| T_NAMESPACE | namespace | namespaces | 
| T_NAME_FULLY_QUALIFIED | \App\Namespace | namespaces (available as of PHP 8.0.0) | 
| T_NAME_QUALIFIED | App\Namespace | namespaces (available as of PHP 8.0.0) | 
| T_NAME_RELATIVE | namespace\Namespace | namespaces (available as of PHP 8.0.0) | 
| T_NEW | new | classes and objects | 
| T_NS_C | __NAMESPACE__ | namespaces | 
| T_NS_SEPARATOR | \ | namespaces | 
| T_NUM_STRING | "$a[0]" | numeric array index inside string | 
| T_OBJECT_CAST | (object) | type-casting | 
| T_OBJECT_OPERATOR | -> | classes and objects | 
| T_NULLSAFE_OBJECT_OPERATOR | ?-> | classes and objects | 
| T_OPEN_TAG | <?php, <? or <% | escaping from HTML | 
| T_OPEN_TAG_WITH_ECHO | <?= or <%= | escaping from HTML | 
| T_OR_EQUAL | |= | assignment operators | 
| T_PAAMAYIM_NEKUDOTAYIM | :: | ::. Also defined as T_DOUBLE_COLON. | 
| T_PLUS_EQUAL | += | assignment operators | 
| T_POW | ** | arithmetic operators | 
| T_POW_EQUAL | **= | assignment operators | 
| T_PRINT | print() | |
| T_PRIVATE | private | classes and objects | 
| T_PROTECTED | protected | classes and objects | 
| T_PUBLIC | public | classes and objects | 
| T_READONLY | readonly | classes and objects (available as of PHP 8.1.0) | 
| T_REQUIRE | require() | require | 
| T_REQUIRE_ONCE | require_once() | require_once | 
| T_RETURN | return | returning values | 
| T_SL | << | bitwise operators | 
| T_SL_EQUAL | <<= | assignment operators | 
| T_SPACESHIP | <=> | comparison operators | 
| T_SR | >> | bitwise operators | 
| T_SR_EQUAL | >>= | assignment operators | 
| T_START_HEREDOC | <<< | heredoc syntax | 
| T_STATIC | static | variable scope | 
| T_STRING | parent, self, etc. | identifiers, e.g. keywords like parentandself,
      function names, class names and more are matched.
      See alsoT_CONSTANT_ENCAPSED_STRING. | 
| T_STRING_CAST | (string) | type-casting | 
| T_STRING_VARNAME | "${a | complex variable parsed syntax | 
| T_SWITCH | switch | switch | 
| T_THROW | throw | Exceptions | 
| T_TRAIT | trait | Traits | 
| T_TRAIT_C | __TRAIT__ | __TRAIT__ | 
| T_TRY | try | Exceptions | 
| T_UNSET | unset() | unset() | 
| T_UNSET_CAST | (unset) | type-casting | 
| T_USE | use | namespaces | 
| T_VAR | var | classes and objects | 
| T_VARIABLE | $foo | variables | 
| T_WHILE | while | while, do..while | 
| T_WHITESPACE | \t \r\n | |
| T_XOR_EQUAL | ^= | assignment operators | 
| T_YIELD | yield | generators | 
| T_YIELD_FROM | yield from | generators | 
See also token_name().