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 相关文章推荐
php db类库进行数据库操作
Mar 19 PHP
PhpMyAdmin中无法导入sql文件的解决办法
Jan 08 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
Nov 10 PHP
php 文件上传实例代码
Apr 19 PHP
PHP命名空间(Namespace)的使用详解
May 04 PHP
基于PHP Socket配置以及实例的详细介绍
Jun 13 PHP
浅析PHP 按位与或 (^ 、&amp;)
Jun 21 PHP
PHP限制页面只能在微信自带浏览器访问的代码
Jan 15 PHP
PHP整数取余返回负数的相关解决方法
May 15 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
Apr 15 PHP
WordPress中邮件的一些修改和自定义技巧
Dec 15 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 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验证码(支持中文)
2007/02/14 PHP
Codeigniter实现智能裁剪图片的方法
2014/06/12 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
2015/05/12 PHP
基于PHP后台的Android新闻浏览客户端
2016/05/23 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
2017/06/06 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
2017/06/30 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
做网页的一些技巧
2007/02/01 Javascript
JavaScript 判断判断某个对象是Object还是一个Array
2010/01/28 Javascript
实现变速回到顶部的JavaScript代码
2011/05/09 Javascript
jQuery之按钮组件的深入解析
2013/06/19 Javascript
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
js获取日期:昨天今天和明天、后天
2014/06/11 Javascript
IE6兼容透明背景图片及解决方案
2015/08/19 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
js实现的在线调色板功能完整实例
2016/12/21 Javascript
Vuex和前端缓存的整合策略详解
2017/05/09 Javascript
JavaScript循环_动力节点Java学院整理
2017/06/28 Javascript
解决webpack -p压缩打包react报语法错误的方法
2017/07/03 Javascript
浅谈vue中改elementUI默认样式引发的static与assets的区别
2018/02/03 Javascript
详解React中合并单元格的正确写法
2019/01/08 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
Python语言的面相对象编程方式初步学习
2016/03/12 Python
Python 3中print函数的使用方法总结
2017/08/08 Python
Python-OpenCV基本操作方法详解
2018/04/02 Python
pyqt5 从本地选择图片 并显示在label上的实例
2019/06/13 Python
利用python求积分的实例
2019/07/03 Python
HTML5移动开发图片压缩上传功能
2016/11/09 HTML / CSS
StubHub西班牙:购买和出售全球活动门票
2017/06/05 全球购物
美国著名的家居用品购物网站:Bed Bath & Beyond
2018/01/05 全球购物
小露珠教学反思
2014/04/30 职场文书
5s标语大全
2014/06/23 职场文书
垃圾分类的活动方案
2014/08/15 职场文书
员工离职证明范本
2015/06/12 职场文书
高中物理教学反思
2016/02/19 职场文书