PHP检查函数是否可调用但不可调用对象?
我想要一个自定义的PHP检查函数是否可调用但不可调用对象?,php,function,Php,Function,我想要一个自定义的是\u callable\u func函数,它可以正确捕获函数和闭包,但忽略实现\u invoke方法的自定义对象 例如: function test1() { // .. } class MyObject { public function test2() { // .. } } class MyInvokableObject { public function __invoke() { // .. } } $t
是\u callable\u func
函数,它可以正确捕获函数和闭包,但忽略实现\u invoke
方法的自定义对象
例如:
function test1()
{
// ..
}
class MyObject
{
public function test2()
{
// ..
}
}
class MyInvokableObject
{
public function __invoke()
{
// ..
}
}
$test3 = function() {
// ..
};
echo is_callable_func('test1'); // true
echo is_callable_func([new MyObject(), 'test2']); // true
echo is_callable_func($test3); // true
echo is_callable_func(new MyInvokableObject()); // must return false!!
我尝试使用:
function is_callable_func($f)
{
return is_callable($f) && !is_object($f);
}
但是它不起作用,因为,例如,匿名函数就是对象。
可能吗
PS:如果建议的解决方案向后兼容PHP5.3,我们将不胜感激。您可以检查可调用对象的类型,闭包将是
闭包的一个实例
function is_callable_func($f)
{
return is_callable($f) && ( !is_object($f) || $f instanceof Closure);
}
您可以检查可调用对象的类型,闭包将是closure
的实例
function is_callable_func($f)
{
return is_callable($f) && ( !is_object($f) || $f instanceof Closure);
}
正中目标!正中目标!