PHP在function_exists中调用函数

use*_*300 3 php function

如果我使用function_exists如下:

if ( ! function_exists( 'get_value' ) ) :
    function get_value( $field ) {
    ..
    return $value;
}
endif;
Run Code Online (Sandbox Code Playgroud)

现在,当我在上述函数之前调用同一文件中的函数时,会给出致命的错误:

Fatal error: Call to undefined function get_value() ...
Run Code Online (Sandbox Code Playgroud)

但是,如果我在上述函数之后调用它,它将返回值而没有任何错误.

现在,如果我删除了function_exists条件,即:

function get_value( $field ) {
    ..
    return $value;
}
Run Code Online (Sandbox Code Playgroud)

然后,如果我在同一文档之前或之后调用此函数,它将起作用.为什么会这样?

Flo*_*ker 5

如果直接在没有if语句的情况下定义函数,则会在解析/编译代码时创建它,因此它在整个文档中可用.

如果将它放在if中,它将在执行if语句时创建,因此在定义之前无法使用它.此时,if语句上面的所有内容都已执行.