为什么看起来PHP核心函数有空块?
问题描述:
我正在挖掘PHP(使用PHPStorm)来弄清楚Exceptions是如何工作的,并且我在一个有趣的情况下继续运行,其中函数有空块。为什么看起来PHP核心函数有空块?
例如,在PHP Runtime/Core/Core.php
,该error_reporting
函数的定义是这样的:
function error_reporting ($level = null) {}
而且这不是唯一的。那文件顶部是这样的(忽略所有的文档注释):
<?php
// Start of Core v.5.3.6-13ubuntu3.2
function zend_version() {}
function func_num_args() {}
function func_get_arg ($arg_num) {}
function func_get_args() {}
function strlen ($string) {}
为什么括号所有空?查看其他核心文件,我看到很多函数定义,但没有实际的代码。一切都在哪里?
答
您正在查看的“Core”文件随PHPStorm提供,以支持自动完成。它们实际上并未被PHP解释器使用。这些函数实际上都是在本地C代码中在PHP解释器中实现的。
例如,error_reporting
的实际定义是Zend/zend_builtin_functions.c
。不过,除非你对PHP内部相当熟悉,否则不太可能告诉你。
那些看起来像存根定义,而不是实际的实现。 – tadman
我认为它在PHP处理器本身内。 – aynber
这些只是在那里提供的,所以你的IDE可以为你提供自动完成和类似的有用功能。 – Giedrius