PHP Callable强制指定回调类型的方法


Posted in PHP onAugust 30, 2016

如果一个方法需要接受一个回调方法作为参数,我们可以这样写

<?php
function dosth($callback){
call_user_func($callback);
}
function callback(){
echo 'do sth callback';
}
dosth('callback');
?>

输出:

do sth callback

但我们不能确定回调方法是否可以调用,因此需要做很多额外的工作去检查这个回调方法是否可以调用。

有什么更好的方法可以判断回调方法是否可调用?
我们可以使用callable来强制指定参数为回调类型,这样可以保证回调方法必须是可以调用的。

例如,回调方法为一个不存在的方法

<?php
function dosth(callable $callback){
call_user_func($callback);
}
dosth('abc');
?>

执行后,提示错误:TypeError: Argument 1 passed to dosth() must be callable
程序并不能执行到dosth内部的处理,从参数类型处就已经做了检查处理,起到保护作用。

而如果把callable去掉

<?php
function dosth($callback){
call_user_func($callback);
}
dosth('abc');
?>

执行后,提示警告:Warning: call_user_func() expects parameter 1 to be a valid callback, function ‘abc' not found or invalid function name

程序能执行到dosth内部的处理,这样就需要做很多额外的工作去检查这个回调方法是否可以调用。

因此,如果方法的参数是回调方法,都应加上callable强制指定为回调类型,这样可以减少调用的错误和提高程序的质量。

以上所述是小编给大家介绍的PHP Callable强制指定回调类型的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
用文本文件制作留言板提示(下)
Oct 09 PHP
PR值查询 | PageRank 查询
Dec 20 PHP
php下通过POST还是GET来传值
Jun 05 PHP
Cakephp 执行主要流程
Mar 24 PHP
php中判断数组是一维,二维,还是多维的解决方法
May 04 PHP
php curl基本操作详解
Jul 23 PHP
PHP简单实现“相关文章推荐”功能的方法
Jul 19 PHP
PHP框架Swoole定时器Timer特性分析
Aug 19 PHP
php防止用户重复提交表单
Nov 02 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
Jul 06 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
Jun 13 PHP
phpstorm 配置xdebug的示例代码
Mar 31 PHP
thinkphp配置文件路径的实现方法
Aug 30 #PHP
总结PHP删除字符串最后一个字符的三种方法
Aug 30 #PHP
功能强大的php文件上传类
Aug 29 #PHP
功能强大的PHP发邮件类
Aug 29 #PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
Aug 29 #PHP
Laravel 5.3 学习笔记之 错误&amp;日志
Aug 28 #PHP
Laravel 5.3 学习笔记之 配置
Aug 28 #PHP
You might like
PHP连接Nginx服务器并解析Nginx日志的方法
2015/08/16 PHP
PHP常见错误提示含义解释(实用!值得收藏)
2016/04/25 PHP
非常实用的php验证码类
2016/05/15 PHP
php实现基于PDO的预处理示例
2017/03/28 PHP
PHP实现Redis单据锁以及防止并发重复写入
2018/04/10 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
Javascript常考语句107条收集
2010/03/09 Javascript
跟着Jquery API学Jquery之一 选择器
2010/04/07 Javascript
js函数的延迟加载实现代码
2012/10/11 Javascript
jQuery中的$.ajax()方法应用
2014/05/06 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
深入浅出讲解ES6的解构
2016/08/03 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
angular.js+node.js实现下载图片处理详解
2017/03/31 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
2017/05/22 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
JS中的防抖与节流及作用详解
2019/04/01 Javascript
JS中作用域以及变量范围分析
2020/07/18 Javascript
使用Python+Splinter自动刷新抢12306火车票
2018/01/03 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
如何利用pygame实现简单的五子棋游戏
2019/12/29 Python
Keras中的多分类损失函数用法categorical_crossentropy
2020/06/11 Python
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
Elemental Herbology官网:英国美容品牌
2019/04/27 全球购物
护理实习自我鉴定
2013/12/14 职场文书
食品安全检查制度
2014/02/03 职场文书
大专生求职信
2014/06/29 职场文书
本科毕业生应聘求职信
2014/07/06 职场文书
领导干部个人整改措施落实情况汇报
2014/10/29 职场文书
拾金不昧表扬信
2015/01/16 职场文书
2016年感恩节活动总结大全
2016/04/01 职场文书
基于tensorflow权重文件的解读
2021/05/26 Python