PHP:什么是 T 常量封装字符串


PHP: What is a T-CONSTANT-ENCAPSED-STRING?

在多个错误消息中,提到了T-CONSTANT-ENCAPSED-STRING

通常有一个解决方案,它是一个简单的语法错误,但它实际上并没有告诉T_CONSTANT-ENCAPSED-STRING的含义是什么。

但我想了解更多有关它的信息。

是吗。。。

  • 。数据类型?
  • 。特殊的错误消息语法?

T_CONSTANT_ENCAPSED_STRING是PHP解析器在创建PHP字节码时生成的许多令牌之一。它们的完整列表在这里。

就其本身而言,它仅表示解析器遇到了带引号的字符串作为文字,例如

$a = "something";

其中"something"T_CONSTANT_ENCAPSED_STRING 所指的项目。(它也适用于'something'带有单引号的变体,请参阅字符串语法)。

在错误消息的上下文中,它指示在预期之外找到了带引号的字符串。这通常是(尽管并非总是)由于程序中某处的报价不匹配。

首先T_CONSTANT_ENCAPSED_STRING是PHP中常量的名称。它代表一个数字(在不同的PHP版本中看到这个)。

T_Token 的前缀(它不表示错误,而是表示令牌)。令牌是当解析 PHP 文件时,文本 - 逐个字母 - 排列成标记。这有助于 PHP 解析器更好地从文本中破译语法。

当分析器

随后将源文本转换为标记时,它偶然发现了分析器没有预料到的标记,则会创建一条错误消息,给出意外的令牌名称。例如,您问题中的令牌:T_CONSTANT_ENCAPSED_STRING .

这本身有点

神秘,错误消息本身根本没有解释令牌,但是PHP手册列出了所有令牌:http://php.net/tokens。

因此,您在这里得到的是带有数字的令牌,该令牌也由名为 T_CONSTANT_ENCAPSED_STRING 的常量表示。除了T_前缀之外,常量名称的其余部分并没有遵循太多的sheme,这就是为什么 - 如果你想了解更多关于特定T_...常量的信息 - 你需要在 http://php.net/tokens 查阅令牌列表。