php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析

php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析

本文主要介绍php判断某个方法是否具有函数function _ exists()、method _ exists()和is_callable()的区别和用法,并结合实例分析PHP function _ exists()、method _ exists()和is_callable()的基本功能、用法、区别和操作注意事项。有需要的可以参考以下。

本文举例说明了php在判断一个方法是否有函数function _ exists()、method _ exists()和is_callable()时的区别和用法。分享给你,供你参考,如下:

php函数function_exists (),method_exists() 与is_callable()的区别在哪?

先说后两个:method_exists()和is_callable():

在php对象设计的过程中,我们经常需要在调用某个方法时做出一个判断,是否属于某个类。常用的方法有method_exists()和is_callable()

相比之下,is_callable()函数更高级。它接受字符串变量形式的方法名作为第一个参数,如果类方法存在并且可以调用,则返回true。如果要检查类中的方法是否可以调用,可以将数组而不是类的方法名作为参数传递给函数。数组必须包含对象或类名作为其第一个元素,要检查的方法名作为其第二个元素。如果该方法存在于类中,则该函数返回true。

接下来看一段代码:

?服务器端编程语言(Professional Hypertext Preprocessor的缩写)

类别测试{

公共函数a() {

返回“测试”;

}

}

abc类{

公共函数a($object,$funcName) {

如果(!Is _ callable (array ($object,$funcName)){/检测方法:$ funcName是否存在于$object中,是否属于正常调用结构。

“echo”错误:the。 .$funcName。不存在于。$object。/br ;

}否则{

echo‘ok’;

}

}

}

$ ABC=new ABC();

$abc-a(测试, 111 );

$abc-a(test , a );

结果如下所示:

那么如果test类中的A方法改为private或者protected会怎么样呢?

如图所示:

如图所示:

好了,我们再来看看method_exists()函数:

结果:

这里不需要讲结论吗?

php中method_exists()和is_callable()有什么区别?

method_exists()和is_callable()的区别在于,在php 5中,方法的存在并不意味着可以被调用。对于私有、受保护和公共类型的方法,method_exits()将返回true,但is_callable()将检查是否可以访问,如果是私有、受保护类型,将返回false。

那么就剩下一个function_exists()了,

这是和后两个相比最弱的一个,因为只有一个参数函数名$string,只决定函数是否定义。

总而言之:

function_exists 比较简单点就是判断函数有没有被定义 而method_exists 是判断类内的方法存不存在 is_callable检测参数是否为合法的可调用结构

返回值为布尔值

更多对PHP相关内容感兴趣的读者,请参考我们的专题:《php常用函数与技巧总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》和《php程序设计算法总结》。

希望这篇文章对大家的PHP编程有所帮助。

php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析