function_exists(\'f\')
将检查函数f
在调用函数\\u之前声明。因此,您的问题的直接答案是-在解释器内存的函数部分。
的结果function_exists
不仅要依赖于声明函数的文件和调用的文件,还要依赖于执行路径。
function a() {}
-- at another file executed later
echo function_exists(\'a\');
// displays true
而
echo function_exists(\'a\');
// display false;
-- at another file executed later
function a() {}
function_exists
在与函数定义相同的文件中(这是一个无关紧要的用例),总是返回true,因为解释器在开始执行文件之前解析所有函数。
更有趣的是,只有在对其父函数求值并且所有php函数都在全局范围内时,才定义嵌套函数,这可能导致
function a() {
function b() {}
}
echo function_exists(\'b\');
// displays false
而
function a() {
function b() {}
}
a();
echo function_exists(\'b\');
// displays true
在像WordPress这样的大型复杂代码中,预测
function_exists
这可能就是core不再使用此模式的原因。如果你有选择,你应该用钩子代替。