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


Posted in PHP onJune 21, 2013

php函数method_exists() 与is_callable()的区别在哪?在php面相对象设计过程中,往往我们需要在调用某一个方法是否属于某一个类的时候做出判断,常用的方法有 method_exists()和is_callable(),相比之下,is_callable()函数要高级一些,它接受字符串变量形式的方法名作为 第一个参数,如果类方法存在并且可以调用,则返回true。如果要检测类中的方法是否能被调用,可以给函数传递一个数组而不是类的方法名作为参数。数组必须包含对象或类名,以将其作为它的第一个元素,要检查的方法名则作为第二个元素。如果该方法在类中存在,函数返回true。
代码示例:

if ( is_callable( array( $obj, $method ) ) ) 
{ 
/*要操作的代码段*/
}

is_callable()可以加收另外一个参数:一个布尔值,如果将该参数设置为true,函数仅仅检查给定的方法或函数名称的语法是否正确,而不检查其是否真正存在。method_exists()函数的参数为一个对象(或类名)和一个方法名,如果给定方法在对象的类中存在,则返回true
代码示例:
if ( method_exists( $obj, $method ) ) 
{ 
/*要操作的代码段*/
}

php函数method_exists()与is_callable()的区别在于在php5中,一个方法存在并不意味着它就可以被调用。对于 private,protected和public类型的方法,method_exits()会返回true,但是is_callable()会检查存在其是否可以访问,如果是private,protected类型的,它会返回false。
PHP 相关文章推荐
福利彩票幸运号码自动生成器
Oct 09 PHP
深入PHP获取随机数字和字母的方法详解
Jun 06 PHP
php 中文字符串首字母的获取函数分享
Nov 04 PHP
使用ob系列函数实现PHP网站页面静态化
Aug 13 PHP
PHP将回调函数作用到给定数组单元的方法
Aug 19 PHP
php单文件版在线代码编辑器
Mar 12 PHP
WordPress中限制非管理员用户在文章后只能评论一次
Dec 31 PHP
highchart数据源纵轴json内的值必须是int(详解)
Feb 20 PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 PHP
PHP设计模式之模板方法模式定义与用法详解
Apr 02 PHP
PHP聊天室简单实现方法详解
Dec 08 PHP
Laravel + Elasticsearch 实现中文搜索的方法
Feb 02 PHP
深入理解PHP中的Session和Cookie
Jun 21 #PHP
PHP 使用MySQL管理Session的回调函数详解
Jun 21 #PHP
解析PHP中一些可能会被忽略的问题
Jun 21 #PHP
关于PHP堆栈与列队的学习
Jun 21 #PHP
浅析PHP 按位与或 (^ 、&)
Jun 21 #PHP
浅析PHP中Collection 类的设计
Jun 21 #PHP
解析PHP无限级分类方法及代码
Jun 21 #PHP
You might like
php防盗链的常用方法小结
2010/07/02 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
PHP中OpenSSL加密问题整理
2017/12/14 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
javascript抖动元素的小例子
2013/10/28 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
js判断某个方法是否存在实例代码
2015/01/10 Javascript
jquery合并表格中相同文本的相邻单元格
2015/07/17 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
2016/12/09 Javascript
JavaScript实现经典排序算法之插入排序
2016/12/28 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
从vue源码看props的用法
2019/01/09 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
python线程锁(thread)学习示例
2013/12/04 Python
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
Django中ORM表的创建和增删改查方法示例
2017/11/15 Python
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
PyQt弹出式对话框的常用方法及标准按钮类型
2019/02/27 Python
用python打印菱形的实操方法和代码
2019/06/25 Python
基于Python中的yield表达式介绍
2019/11/19 Python
python 的topk算法实例
2020/04/02 Python
使用CSS3编写类似iOS中的复选框及带开关的按钮
2016/04/11 HTML / CSS
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
详解rem 适配布局
2018/10/31 HTML / CSS
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
洲际酒店集团美国官网:IHG美国
2017/11/16 全球购物
2013年员工自我评价范文
2013/12/27 职场文书
《在大海中永生》教学反思
2014/02/24 职场文书
环境监测与治理技术专业求职信
2014/07/06 职场文书
心理咨询专业自荐信
2014/07/07 职场文书
分居协议书范本(律师见证版)
2014/11/26 职场文书
2015年教师自我评价范文
2015/03/04 职场文书