本文主要介绍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编程有所帮助。