您的位置:首页 > 编程语言 > PHP开发

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

2016-08-10 17:27 316 查看
在编程中,我们有的时候需要判断某个类中是否包含某个方法,除了使用反射机制,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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: