为什么PHP核心函数似乎有空块?

时间:2017-08-29 19:08:24

标签: php

我正在挖掘PHP(使用PHPStorm)来弄清楚异常是如何工作的,并且我一直在运行一个有趣的情况,其中函数有空块。

例如,在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) {}

为什么括号都是空的?通过查看其他核心文件,我看到了很多函数定义,但没有实际的代码。一切都在哪里?

1 个答案:

答案 0 :(得分:4)

您正在查看的“核心”文件随PHPStorm一起提供,以支持自动完成。它们实际上并没有被PHP解释器使用。这些函数实际上都是在PHP解释器中以本机C代码实现的。

例如,error_reporting的真正定义是Zend/zend_builtin_functions.c。除非你非常熟悉PHP内部,否则它不太可能告诉你。