在解析PHP文件时,我对PHP的行为感到困惑。我一直在读这个
解释PHP语言
所以我有代码
var_dump(function_exists('abc')); exit;
function abc() {
return;
}
var_dump
应根据我的假设打印false
,但会打印bool(true)
。
有人可以帮我理解这种行为吗?
答案 0 :(得分:2)
请参阅this answer。
简而言之,它在运行时被编译成一种字节码,然后进行解释 - 在这样做的过程中,您将可以使用函数的定义,即使它们出现在最后也是如此。
答案 1 :(得分:0)
function_exist将检查function_name的已定义函数列表,包括内置(内部)和用户定义的函数。因此,php解释器检查具有名称的函数是否在解释之前编译的字节码中定义。