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

 

接下来看一段代码:

<?php
class test {
public function a() {
return "test";
} }
class abc{
public function a($object,$funcName) {
if(!is_callable(array($object,$funcName))) {//检测方法:$funcName是否存在于$object中,并且属于正常的调用结构
echo "Error: the"." ".$funcName." no exist in " .$object."</br>";
} else {
echo "ok";
}
}
}
$abc = new abc();
$abc->a("test","111");
$abc->a("test","a");

结果显示如图:

那么 如果把test类中的a方法改成私有的 或者是 受保护的 将会是什么样的结果呢?

代码如图:

结果如图:

好了我们再来看一下 method_exists()这个函数:

结果:

php中的method_exists()和is_callable()的区别是什么呢?

php函数method_exists()与is_callable()的区别在于在php5中,一个方法存在并不意味着它就可以被调用。对于 private,protected和public类型的方法,method_exits()会返回true,但是is_callable()会检查存在其是否可以访问,如果是private,protected类型的,它会返回false。

function_exists(),

这个比上两个的检测强度来讲是最弱的 因为 只有一个参数   函数名 $string  只会判断函数有没有被定义

总结一下:

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

最新文章

  1. Android 通过httppost上传文本文件到服务器。
  2. iOS开发之集成百度地图踩过的那些坑(基于 Xcode7.0/iOS9.2)
  3. ASPX版菜刀一句话,留后门专用
  4. C# Xml文件操作,解释见注释
  5. 用xml添加动画
  6. Linux命令-grep
  7. OC: Block回调的使用demo
  8. java开发者最常去的20个英文网站
  9. Solr与Tomcat的整合
  10. centos中-hadoop单机安装及伪分布式运行实例
  11. 201521145048 《Java程序设计》第7周学习总结
  12. listener.ora--sqlnet.ora--tnsnames.ora的关系以及手工配置举例(转载:http://blog.chinaunix.net/uid-83572-id-5510.ht)
  13. 调整代码生成工具Database2Sharp的Winform界面生成,使其易于列表工具栏的使用。
  14. react recompose
  15. 利用Spring的AbstractRoutingDataSource解决多数据源的问题
  16. div锚点链接跳转
  17. Android Launcher分析和修改1——Launcher默认界面配置(default_workspace)
  18. 抓包工具Charles的简单使用
  19. Uni2D 入门 -- Atlas转载 http://blog.csdn.net/kakashi8841/article/details/17588095
  20. Table转换成实体、Table转换成实体集合(可转换成对象和值类型)

热门文章

  1. android studio 3.2 查看Deveice Monitor
  2. android studio compile api implementation 区别
  3. ios uiimagepickercontroller 选择相册或者拍照上传
  4. 洛谷 P5017 摆渡车
  5. 洛谷 P2622 关灯问题II【状压DP】
  6. 八皇后问题 2n皇后问题
  7. node 配置文件
  8. B-Tree(B树)原理及C++代码实现
  9. 05 - Tomcat 线程池的配置与优化
  10. 隐马尔可夫随机场HMM