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 相关文章推荐
ADODB的数据库封包程序库
Dec 31 PHP
php array_unique之后json_encode需要注意
Jan 02 PHP
php生成局部唯一识别码LUID的代码
Oct 06 PHP
PHP引用(&amp;)各种使用方法实例详解
Mar 20 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
Dec 16 PHP
24条货真价实的PHP代码优化技巧
Jul 28 PHP
PHP Ajax实现无刷新附件上传
Aug 17 PHP
php基于curl重写file_get_contents函数实例
Nov 08 PHP
PHP基于自定义类随机生成姓名的方法示例
Aug 05 PHP
PHP笛卡尔积实现算法示例
Jul 30 PHP
PHP生成随机码的思路与方法实例探索
Apr 11 PHP
PHP的new static和new self的区别与使用
Nov 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在Web开发领域的优势
2006/10/09 PHP
php笔记之:数据类型与常量的使用分析
2013/05/14 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
键盘控制事件应用教程大全
2006/11/24 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
Bootstrap教程JS插件弹出框学习笔记分享
2016/05/17 Javascript
JavaScript中用let语句声明作用域的用法讲解
2016/05/20 Javascript
js的三种继承方式详解
2017/01/21 Javascript
jQuery Ajax全解析
2017/02/13 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
解决微信二次分享不显示摘要和图片的问题
2017/08/18 Javascript
vue自定义全局组件(自定义插件)的用法
2018/01/30 Javascript
vue计算属性computed的使用方法示例
2019/03/13 Javascript
Vue.js原理分析之nextTick实现详解
2020/09/07 Javascript
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
如何运行Python程序的方法
2013/04/21 Python
Python的面向对象思想分析
2015/01/14 Python
Python的Django框架中的URL配置与松耦合
2015/07/15 Python
Python中作用域的深入讲解
2018/12/10 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
python爬虫如何解决图片验证码
2021/02/14 Python
马来西亚银饰品牌:JEOEL
2017/12/15 全球购物
机关作风整顿个人整改措施思想汇报
2014/09/29 职场文书
公司领导班子群众路线四风问题对照检查材料
2014/10/02 职场文书
颐和园英文导游词
2015/01/30 职场文书
事业单位个人总结
2015/02/12 职场文书
2015年青年志愿者工作总结
2015/05/20 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
2016年学校十一国庆节活动总结
2016/04/01 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
详解NodeJS模块化
2021/06/15 NodeJs
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis