2012-07-10 59 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