• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
孙龙 程序员
少时总觉为人易,华年方知立业难
博客园    首页    新随笔    联系   管理    订阅  订阅
php函数method_exists()与is_callable()的区别 2016年08月10日 17:27:54

在编程中,我们有的时候需要判断某个类中是否包含某个方法,除了使用反射机制,PHP还提供了method_exists()和is_callable()方法进行判断。那么两则区别是什么呢?

已知类文件如下:

class Student{
    private $alias=null;
    private $name='';
    public function __construct($name){
        $this->name=$name;
    }
    private function setAlias($alias){
        $this->alias=$alias;
    }
    public function getName(){
        return $this->name;
    }
}

方法是private,protected类型的,method_exists会报错,is_callable会返回false。

实例

下面是判断某一对象中是否存在方法getName

通过method_exists实现

$xiaoming=new Student('xiaoming');
if (method_exists($xiaoming, 'getName')) {   
    echo 'exist';
}else{
    echo 'not exist';
}
exit();

输出exist

通过is_callable实现

$xiaoming=new Student('xiaoming');
if (is_callable(array($xiaoming, 'getName'))) {   
    echo 'exist';
}else{
    echo 'not exist';
}
exit();

输出exist

下面是判断某一对象中是否存在方法setAlias 
当使用method_exists的时候报错如下 

 

  

  

本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/articles/9337589.html

posted on 2018-07-19 18:30  孙龙-程序员  阅读(100)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3