2012-07-10 17 views
3

函數如果我使用function_exists如下:PHP調用function_exists

if (! function_exists('get_value')) : 
    function get_value($field) { 
    .. 
    return $value; 
} 
endif; 

現在,當我調用上面的函數之前相同文件中的函數,它會給致命錯誤:

Fatal error: Call to undefined function get_value() ... 

但是,如果我在上面的函數後調用它,它將返回值沒有任何錯誤。

現在,如果我刪除function_exists條件,即:

function get_value($field) { 
    .. 
    return $value; 
} 

然後,它會如果我在同一文件中之前或之後調用這個函數工作。這是爲什麼?

+0

bcoz u的聲明瞭它 – swapnesh 2012-07-10 09:35:08

+0

地方功能在文件的頂部之前調用它,並調用後,問題是內部的函數定義將不會希望提供的功能,直到執行到達如果 – Gntem 2012-07-10 09:35:45

回答

5

如果您不使用if語句直接定義函數,它將在解析/編譯代碼時創建,因此它在整個文檔中可用。

如果你把它放在if裏面,它會在執行if語句時被創建,所以在定義之前不可能使用它。此時,if語句上面寫的所有內容都已經被執行。

0

你在聲明它之前調用函數,爲什麼它顯示錯誤。聲明你的功能IF語句以上,是這樣的:

function get_value(){ 
//your statements 
} 

,寫

if(condition){ 
//your statements 
} 
+0

OP很好意識到這一點,他的問題更多的是關於if語句內的函數聲明的情況。 – 2012-07-10 09:40:11