我的一个同事通过null在 PHPStorm 中按住ctrl 单击发现,PHP 定义null为
define ('null', null, true);
Run Code Online (Sandbox Code Playgroud)
在core_d.php。
null为自己?到目前为止,我最好的理论是可能null已经定义了,但是define可以这么说,使用允许添加不区分大小写的别名。我对 PHP 的了解不够,无法判断这种可能性。
core_d.php属于 PHPStorm 而不是 PHP 本身。查看github上的文件。PHP 几乎完全是用 C 编写的。该文件的存在可能是为了帮助了解代码和静态分析。从存根回购的自述文件:
STUBS 是正常的、语法正确的 PHP 文件,包含所有内置 PHP 内容和大多数标准扩展的函数和类签名、常量定义等。存根需要包含完整的 PHPDOC,尤其是正确的 @return 注释。
IDE 需要它们来完成、代码检查、类型推断、文档弹出等。大多数这些服务的质量取决于存根(基本上是它们的 PHPDOC @annotations)的质量。
但是,正如Bartosz Zasada所指出的,php 确实定义了一个名为 null 的常量。它目前在.php 末尾的 php 源代码的第137 行中ext/zend/zend_constants.c定义zend_register_standard_constants()。