在 PHP 中,gettype()
函数用于获取变量的类型。但是,当你尝试获取回调函数的类型时,它会返回 “callback”,而不是实际的回调类型(例如 “function”)。这是因为回调函数本质上是一个指向函数的指针,而 gettype()
无法识别具体的函数类型。
如果你想要检查一个变量是否是回调函数,你可以使用 is_callable()
函数。is_callable()
函数会检查给定的变量是否可以被调用(例如,它是否是一个函数名、闭包或者实现了 __invoke()
方法的对象)。
这里有一个例子:
function myCallback() {
echo "Hello, I'm a callback function!";
}
$callback = 'myCallback';
if (is_callable($callback)) {
echo "The variable is a callback function.";
} else {
echo "The variable is not a callback function.";
}
在这个例子中,myCallback
是一个函数,所以 is_callable($callback)
返回 true
,输出 “The variable is a callback function.”。
如果你想要获取回调函数的具体类型(例如,它是一个匿名函数还是命名函数),你可以使用 get_defined_functions()
函数。这个函数返回一个包含所有已定义函数的数组,你可以在其中查找你的回调函数。
这里有一个例子:
function myCallback() {
echo "Hello, I'm a callback function!";
}
$callback = 'myCallback';
if (is_callable($callback)) {
$definedFunctions = get_defined_functions()['internal'];
if (in_array($callback, $definedFunctions)) {
echo "The variable is a defined function.";
} elseif (in_array($callback, $defined_functions['user'])) {
echo "The variable is a user-defined function.";
} else {
echo "The variable is not a function.";
}
} else {
echo "The variable is not a callback function.";
}
在这个例子中,我们首先检查 $callback
是否是一个可调用的变量。如果是,我们使用 get_defined_functions()
函数获取所有已定义的函数(包括内部和用户定义的函数),然后检查 $callback
是否在这些函数中。如果找到了匹配的函数,我们输出相应的消息。