在条件内定义函数

Ema*_*sev 3 php

Snippet 1可以使用.小片2没有.为什么?

1.

foo();

function foo()
{
    // do soemething
}
Run Code Online (Sandbox Code Playgroud)

2.

foo();

if(!function_exists("foo"))
{
    function foo()
    {
        // do soemething
    }
}
Run Code Online (Sandbox Code Playgroud)

Nik*_*kiC 11

http://www.php.net/manual/en/functions.user-defined.php:

函数在引用之前不需要定义,除非有条件地定义函数 [...]它的定义必须在被调用之前处理.


Mar*_*ker 6

你试图测试之前执行foo()以查看它是否被定义(并随后定义它)

if(!function_exists("foo")) 
{ 
    function foo() 
    { 
        // do soemething 
    } 
} 

foo(); 
Run Code Online (Sandbox Code Playgroud)