解析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中通过ADO调用Asscess数据库和COM程序
Oct 09 PHP
php学习笔记 面向对象的构造与析构方法
Jun 13 PHP
调整PHP的性能
Oct 30 PHP
windows7下安装php的imagick和imagemagick扩展教程
Jul 04 PHP
PHP基于CURL进行POST数据上传实例
Nov 10 PHP
54个提高PHP程序运行效率的方法
Jul 19 PHP
Zend Framework教程之模型Model基本规则和使用方法
Mar 04 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
Mar 17 PHP
PHP yii实现model添加默认值的方法(两种方法)
Nov 10 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
Apr 21 PHP
laravel解决迁移文件一次删除创建字段报错的问题
Oct 24 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程序中防止盗链
2008/04/09 PHP
Apache 配置详解(最好的APACHE配置教程)
2010/07/04 PHP
php对大文件进行读取操作的实现代码
2013/01/23 PHP
跟我学Laravel之路由
2014/10/15 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
thinkPHP分页功能实例详解
2017/05/05 PHP
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
JavaScript 错误处理与调试经验总结
2010/08/10 Javascript
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
2014/04/22 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
JavaScript 保护变量不被随意修改的实现代码
2017/09/27 Javascript
浅谈Webpack多页应用HMR卡住问题
2019/04/24 Javascript
python使用mysqldb连接数据库操作方法示例详解
2013/12/03 Python
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
Python检测网站链接是否已存在
2016/04/07 Python
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
Python内置模块turtle绘图详解
2017/12/09 Python
Python 中Pickle库的使用详解
2018/02/24 Python
对python:print打印时加u的含义详解
2018/12/15 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
Python中使用logging和traceback模块记录日志和跟踪异常
2019/04/09 Python
Python实现FM算法解析
2019/06/18 Python
python3中calendar返回某一时间点实例讲解
2020/11/18 Python
澳大利亚天然护肤品、化妆品和健康产品一站式商店:Nourished Life
2018/12/02 全球购物
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
德国帽子专家:Hutshopping
2019/11/03 全球购物
类的核心特性有哪些
2014/01/01 面试题
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
七年级生物教学反思
2014/01/30 职场文书
人民教师的自我评价分享
2014/02/21 职场文书
十佳中学生事迹材料
2014/06/02 职场文书
爱心捐书活动总结
2014/07/05 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书