2013-12-22 36 views
0

PHP有大量電池包含的功能,例如, functions on arrays。其中一些如each存在於get_defined_functions()['internal']中。其他人,如reset和許多其他人,根本不存在。然而,它們被視爲其他方式的功能:它們不被記錄爲「語言結構」或關鍵字;我可以使用「可變函數」功能調用它們; function_exists("reset")返回true;如果我嘗試重新定義它們(例如function reset() { ... }),我會收到有關重新聲明的錯誤,而不是語法錯誤;等等。PHP:爲什麼`get_defined_functions`中缺少一些內部函數?

爲什麼這些功能未列入get_defined_functions?他們實際上不是功能嗎?如果不是,它們是什麼?如果他們是功能,那麼究竟是get_defined_functions上市?無論哪種情況,我如何列出get_defined_functions中未出現的內容?

+0

調用上@喬恩飛碟雙向的這一個電源。 – Ohgodwhy

+0

我無法複製那個結果,http://codepad.org/1ilxgNxi,你會在'['internal'] [576]'看到'reset'。或者如果你想看到不同的PHP版本:http://3v4l.org/Q33FX – jeroen

+0

不知道爲什麼這被標記爲重複,因爲它顯然不是,但無論如何。這裏的PHP mods似乎非常熱衷於將非重複項標記爲重複項! – jameshfisher

回答

1

很簡單的答案:重置存在於get_defined_functions()['internal']中。在這個小提琴

看[1532]:http://phpfiddle.org/main/code/h5n-ndx

+0

啊。好。這很奇怪。我正在使用'var_dump',你正在使用'print_r'。有時間找出其中的差別。 – jameshfisher

+0

Aaaarrgh。難以置信的。 'var_dump'只是剔除部分序列化數據結構:「(more elements)...」。更重要的是,沒有辦法告訴它我真的希望它能印出我說我想印刷的東西。那麼,我從現在開始不會使用它。謝謝! – jameshfisher

+0

@jameshfisher另外var_dump顯示它:http://phpfiddle.org/main/code/fjt-rhy。顯示您用於輸出的代碼。 –

相關問題