Php/docs/tokens
List of Parser Tokens
Various parts of the PHP language are represented internally by types like
T_SR. PHP outputs identifiers like this one in parse errors, like
"Parse error: unexpected T_SR, expecting ',' or ';' in script.php on line 10."
You're supposed to know what T_SR means. For everybody who doesn't know that, here is a table with those identifiers, PHP-syntax and references to the appropriate places in the manual.
Note:
Usage of T_* constants
All tokens listed below are also defined as PHP constants. Their value is automatically generated based on PHP's underlying parser infrastructure. This means that the concrete value of a token may change between two PHP versions. For example the
T_FILE
constant is365
in PHP 5.3, while the same value refers now toT_TRAIT
in PHP 5.4 and the value ofT_FILE
is369
. 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. Instead your code should utilize custom values (using big numbers like10000
) and an appropriate strategy that will work with both PHP versions and T_* values.
Token | Syntax | Reference | |
---|---|---|---|
T_ABSTRACT
|
abstract | Class Abstraction | |
T_AND_EQUAL
|
&= | assignment operators | |
T_ARRAY
|
array() | array(), array syntax | |
T_ARRAY_CAST
|
(array) | type-casting | |
T_AS
|
as | foreach | |
T_BAD_CHARACTER
|
anything below ASCII 32 except \t (0x09), \n (0x0a) and \r (0x0d)
(available since 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 since 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_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 since 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_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_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_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_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_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().