2017-08-29 57 views
3

我正在挖掘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

回答

4

您正在查看的「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

相關問題