在编程中,我们有的时候需要判断某个类中是否包含某个方法,除了使用反射机制,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