PHP 中表示简单赋值 (=) 的标记是什么?

Rea*_*ues 5 php token

我本来希望在 PHP 的解析器标记列表中找到一个简单的T_EQUALT_ASSIGN作为此处的标记,但它不存在。=

那么用什么token来表示赋值操作呢?假设我有$x = 1;,它以 开头T_VARIABLE,然后是T_WHITESPACE,然后是=,然后是数字所属的任何标记,然后以 结束;。使用什么标记来表示这些字符?

jnr*_*bsn 4

如果您运行此代码:

var_dump(token_get_all('<?php $foo = "bar"; ?>'));
Run Code Online (Sandbox Code Playgroud)

你会看到它=并不是;令牌。

PHP手册token_get_all返回“...单个字符(即:; , . , > , !等...),或包含元素 0 中的标记索引(原始字符串内容)的三元素数组元素 1 中的标记和元素 2 中的行号。” 按照我的解释,单个字符不是标记。

尽管您可能会在“解析器标记列表”页面上注意到T_NS_SEPARATOR标记(即反斜杠)是单个字符。然而,由于 PHP 是用 C 编写的,并且由于 C 中仅包含反斜杠的字符数组实际上是两个字符(即"\\"),因此该标记实际上并不是引擎盖下的单个字符。这只是我的解释理论。