为什么看起来PHP核心函数有空块?

为什么看起来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) {} 

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

+4

那些看起来像存根定义,而不是实际的实现。 – tadman

+0

我认为它在PHP处理器本身内。 – aynber

+3

这些只是在那里提供的,所以你的IDE可以为你提供自动完成和类似的有用功能。 – Giedrius

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

例如,error_reporting的实际定义是Zend/zend_builtin_functions.c。不过,除非你对PHP内部相当熟悉,否则不太可能告诉你。

+1

我认为Giedrius将它钉在评论中。如果你想编辑你的答案来加入,我会标记你接受。 – amflare

+0

@amflare我有点犹豫,跳到这一结论,而不知道你在看什么。你在使用什么IDE,以及它为那个文件显示了什么路径? – duskwuff

+0

PHPStorm和路径是'PHP Runtime/Core/Core.php' – amflare