PHP callback函数使用方法和注意事项


Posted in PHP onJanuary 23, 2015

在PHP中有些诸如 call_user_function()usort() 的函数接受用户自定义的函数作为一个参数。Callback 函数不仅可以是一个简单的函数,它还可以是一个对象的方法,包括静态类的方法。

一个 PHP 函数用函数名字符串来传递。您可以传递任何内建的或者用户自定义的函数,除了 array()echo()empty()eval()exit()isset()list()print()unset()

一个对象的方法以数组的形式来传递,数组的 0 下标指明对象名,下标 1 指明方法名。

对于没有实例化为对象的静态类,要传递其方法,将数组 0 下标指明的对象名换成该类的名称即可。

Callback 函数实例:

  • http://www.phpe.net/manual/language.pseudo-types.php
  • http://cn.php.net/manual/en/language.pseudo-types.php
<?php 

// An example callback function

function my_callback_function() {

   echo 'hello world!';

}

// An example callback method

class MyClass {

   function myCallbackMethod() {

       echo 'Hello World!';

   }

}

// Type 1: Simple callback

call_user_func('my_callback_function');

// Type 2: Static class method call

call_user_func(array('MyClass', 'myCallbackMethod'));

// Type 3: Object method call

$obj = new MyClass();

call_user_func(array($obj, 'myCallbackMethod'));

?>

 

PHP 相关文章推荐
MySql中正则表达式的使用方法描述
Jul 30 PHP
Windows下XDebug 手工配置与使用说明
Jul 11 PHP
PHP实现异步调用方法研究与分享
Oct 27 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
Apr 29 PHP
PHP实现的MongoDB数据库操作类分享
May 12 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
Jan 09 PHP
php+Mysqli利用事务处理转账问题实例
Feb 11 PHP
jquery获取多个checkbox的值异步提交给php的方法
Jun 24 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
Oct 26 PHP
php上传图片类及用法示例
May 11 PHP
PHP微信开发之查询城市天气
Jun 23 PHP
php 广告点击统计代码(php+mysql)
Feb 21 PHP
PHPExcel内存泄漏问题解决方法
Jan 23 #PHP
使用PHP生成PDF方法详解
Jan 23 #PHP
C# WinForm中实现快捷键自定义设置实例
Jan 23 #PHP
对PHP PDO的一些认识小结
Jan 23 #PHP
smarty模板引擎中自定义函数的方法
Jan 22 #PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
Jan 22 #PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
Jan 22 #PHP
You might like
PHP中动态HTML的输出技术
2006/10/09 PHP
优化PHP程序的方法小结
2012/02/23 PHP
php使用反射插入对象示例分享
2014/03/11 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
PHP实现文件上传和多文件上传
2015/12/24 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
javascript中取前n天日期的两种方法分享
2014/01/26 Javascript
zeroclipboard 单个复制按钮和多个复制按钮的实现方法
2014/06/14 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
jQuery获取父元素及父节点的方法小结
2016/04/14 Javascript
基于jQuery倒计时插件实现团购秒杀效果
2016/05/13 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
AngularJS国际化详解及示例代码
2016/08/18 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
jquery分页插件pagination使用教程
2018/10/23 jQuery
vue中使用codemirror的实例详解
2018/11/01 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
Vue中component标签解决项目组件化操作
2020/09/04 Javascript
Python的gevent框架的入门教程
2015/04/29 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
使用Python的datetime库处理时间(RPA流程)
2019/11/24 Python
python写一个随机点名软件的实例
2019/11/28 Python
Python字节单位转换实例
2019/12/05 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
AJAX的优缺点都有什么
2015/08/18 面试题
优秀团队获奖感言
2014/02/19 职场文书
学校领导班子四风对照检查材料
2014/09/27 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
商务宴会祝酒词
2015/08/11 职场文书
pytorch MSELoss计算平均的实现方法
2021/05/12 Python
详解Vue的列表渲染
2021/11/20 Vue.js