解析器记号(token)列表

PHP 语言的各个部分在内部使用记号表示。包含无效序列的代码片段可能会导致错误。例如 Parse error: syntax error, unexpected token "==", expecting "(" in script.php on line 10."。其中记号 == 在内部由 T_IS_EQUAL 表示。

下表列出的所有记号。也可以用作 PHP 常量。

注意: T_* 常量用法

T_* 常量是根据 PHP 底层解析器数据结构自动生成的。这意味着记号的具体值可能会在不同的 PHP 版本之间发生变更。这也意味着代码不应直接从 PHP X.Y.Z 版本中获取原始 T_* 值,从而提供跨越多个版本的兼容性。

为了在多个 PHP 版本中使用 T_* 常量,用户可以对 PHP 版本和 T_* 值使用适当的策略(使用类似 10000 的大数),来定义未定义的常量。

<?php
// 在 PHP 7.4.0 之前,未定义 T_FN。
defined('T_FN') || define('T_FN', 10001);

记号
记号 语法 参考
T_ABSTRACT abstract 抽象类
T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG & 类型声明(自 PHP 8.1.0 起有效)
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG & 类型声明(自 PHP 8.1.0 起有效)
T_AND_EQUAL &= 赋值运算符
T_ARRAY array() array()数组语法
T_ARRAY_CAST (array) 类型转换
T_AS as foreach
T_ATTRIBUTE #[ 注解(自 PHP 8.0.0 起有效)
T_BAD_CHARACTER   除了 \t(0x09)、\n(0x0a)、\r(0x0d)之外所有低于 ASCII 32 的内容(自 PHP 7.4.0 起有效)
T_BOOLEAN_AND && 逻辑运算符
T_BOOLEAN_OR || 逻辑运算符
T_BOOL_CAST (bool) 或 (boolean) 类型转换
T_BREAK break break
T_CALLABLE callable callable
T_CASE case switch
T_CATCH catch 异常
T_CLASS class 类和对象
T_CLASS_C __CLASS__ 魔术常量
T_CLONE clone 类和对象
T_CLOSE_TAG ?> 或 %> 从 HTML 中转义
T_COALESCE ?? 比较运算符
T_COALESCE_EQUAL ??= 赋值运算符 (自 PHP 7.4.0 起有效)
T_COMMENT // 或 # 以及 /* */ 注释
T_CONCAT_EQUAL .= 赋值运算符
T_CONST const 类常量
T_CONSTANT_ENCAPSED_STRING "foo" 或 'bar' 字符串语法
T_CONTINUE continue continue
T_CURLY_OPEN {$ 高级 变量字符串插值
T_DEC -- 递增/递减运算符
T_DECLARE declare declare
T_DEFAULT default switch
T_DIR __DIR__ 逻辑常量
T_DIV_EQUAL /= 赋值运算符
T_DNUMBER 0.12 等 浮点数
T_DO do do..while
T_DOC_COMMENT /** */ PHPDoc 风格注释
T_DOLLAR_OPEN_CURLY_BRACES ${ 基本 变量字符串插值
T_DOUBLE_ARROW => 数组语法
T_DOUBLE_CAST (real)、(double) 或 (float) 类型转换
T_DOUBLE_COLON :: 见下面的 T_PAAMAYIM_NEKUDOTAYIM
T_ECHO echo echo
T_ELLIPSIS ... 函数参数
T_ELSE else else
T_ELSEIF elseif elseif
T_EMPTY empty empty()
T_ENCAPSED_AND_WHITESPACE " $a" 带变量字符串的常量部分
T_ENDDECLARE enddeclare declare替代语法
T_ENDFOR endfor for替代语法
T_ENDFOREACH endforeach foreach替代语法
T_ENDIF endif if替代语法
T_ENDSWITCH endswitch switch替代语法
T_ENDWHILE endwhile while替代语法
T_ENUM enum 枚举(自 PHP 8.1.0 起有效)
T_END_HEREDOC   heredoc 语法
T_EVAL eval() eval()
T_EXIT exit 或 die exit()die()
T_EXTENDS extends extends类和对象
T_FILE __FILE__ 魔法常量
T_FINAL final Final 关键字
T_FINALLY finally 异常
T_FN fn 箭头函数 (自 PHP 7.4.0 起有效)
T_FOR for for
T_FOREACH foreach foreach
T_FUNCTION function 函数
T_FUNC_C __FUNCTION__ 魔法常量
T_GLOBAL global 变量作用域
T_GOTO goto goto
T_HALT_COMPILER __halt_compiler() __halt_compiler
T_IF if if
T_IMPLEMENTS implements 对象接口
T_INC ++ 递增/递减运算符
T_INCLUDE include include
T_INCLUDE_ONCE include_once include_once
T_INLINE_HTML   PHP 外的文本
T_INSTANCEOF instanceof 类型运算符
T_INSTEADOF insteadof Trait
T_INTERFACE interface 对象接口
T_INT_CAST (int) 或 (integer) 类型转换
T_ISSET isset() isset()
T_IS_EQUAL == 比较运算符
T_IS_GREATER_OR_EQUAL >= 比较运算符
T_IS_IDENTICAL === 比较运算符
T_IS_NOT_EQUAL != or <> 比较运算符
T_IS_NOT_IDENTICAL !== 比较运算符
T_IS_SMALLER_OR_EQUAL <= 比较运算符
T_LINE __LINE__ 魔术常量
T_LIST list() list()
T_LNUMBER 123、012、0x1ac 等 整型
T_LOGICAL_AND and 逻辑运算符
T_LOGICAL_OR or 逻辑运算符
T_LOGICAL_XOR xor 逻辑运算符
T_MATCH match match(自 PHP 8.0.0 起有效)
T_METHOD_C __METHOD__ 魔术常量
T_MINUS_EQUAL -= 赋值运算符
T_MOD_EQUAL %= 赋值运算符
T_MUL_EQUAL *= 赋值运算符
T_NAMESPACE namespace 命名空间
T_NAME_FULLY_QUALIFIED \App\Namespace 命名空间(自 PHP 8.0.0 起有效)
T_NAME_QUALIFIED App\Namespace 命名空间(自 PHP 8.0.0 起有效)
T_NAME_RELATIVE namespace\Namespace 命名空间(自 PHP 8.0.0 起有效)
T_NEW new 类和对象
T_NS_C __NAMESPACE__ 命名空间
T_NS_SEPARATOR \ 命名空间
T_NUM_STRING "$a[0]" 字符串内的数组数字索引
T_OBJECT_CAST (object) 类型转换
T_OBJECT_OPERATOR -> 类和对象
T_NULLSAFE_OBJECT_OPERATOR ?-> 类和对象
T_OPEN_TAG <?php, <? 或 <% 从 HTML 中转义
T_OPEN_TAG_WITH_ECHO <?= 或 <%= 从 HTML 中转义
T_OR_EQUAL |= 赋值运算符
T_PAAMAYIM_NEKUDOTAYIM :: 范围解析。也定义为 T_DOUBLE_COLON
T_PLUS_EQUAL += 赋值运算符
T_POW ** 算术运算符
T_POW_EQUAL **= 赋值运算符
T_PRINT print print
T_PRIVATE private 类和对象
T_PROTECTED protected 类和对象
T_PUBLIC public 类和对象
T_READONLY readonly 类和对象(自 PHP 8.1.0 起有效)
T_REQUIRE require require
T_REQUIRE_ONCE require_once require_once
T_RETURN return 返回值
T_SL << 位运算符
T_SL_EQUAL <<= 赋值运算符
T_SPACESHIP <=> 比较运算符
T_SR >> 位运算符
T_SR_EQUAL >>= 赋值运算符
T_START_HEREDOC <<< heredoc 语法
T_STATIC static 变量作用域
T_STRING parent、self 等 标识符,比如像 parentself、函数名、类名等等的关键字。参阅 T_CONSTANT_ENCAPSED_STRING
T_STRING_CAST (string) 类型转换
T_STRING_VARNAME "${a 可变变量 在字符串中插值
T_SWITCH switch switch
T_THROW throw 异常
T_TRAIT trait Trait
T_TRAIT_C __TRAIT__ __TRAIT__
T_TRY try 异常
T_UNSET unset() unset()
T_UNSET_CAST (unset) 类型转换
T_USE use 命名空间
T_VAR var 类和对象
T_VARIABLE $foo 变量
T_WHILE while whiledo..while
T_WHITESPACE \t \r\n  
T_XOR_EQUAL ^= 赋值运算符
T_YIELD yield 生成器
T_YIELD_FROM yield from 生成器

参见 token_name()