首页 > Web开发 > 详细

php函数method_exists()与is_callable()的区别

时间:2016-08-10 17:40:53      阅读:193      评论:0      收藏:0      [点我收藏+]

在编程中,我们有的时候需要判断某个类中是否包含某个方法,除了使用反射机制,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的时候报错如下
技术分享
当使用is_callable的时候,输出not exist

php函数method_exists()与is_callable()的区别

原文:http://blog.csdn.net/hsd2012/article/details/52174521

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!