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_NEKUDOTAYIM below |
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 parent and self , function names, class names and more are matched. See also T_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().