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 移除数组重复元素的一点说明
Nov 27 PHP
PHP自定义大小验证码的方法详解
Jun 07 PHP
从PHP的源码中深入了解stdClass类
Apr 18 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
Jun 05 PHP
php输出xml必须header的解决方法
Oct 17 PHP
PHP上传文件参考配置大文件上传
Dec 16 PHP
php实现倒计时效果
Dec 19 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
Jan 07 PHP
PHP 匿名函数与注意事项详细介绍
Nov 26 PHP
利用php的ob缓存机制实现页面静态化方法
Jul 09 PHP
thinkphp分页集成实例
Jul 24 PHP
php+redis实现商城秒杀功能
Nov 19 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 变量未定义等错误的解决方法
2011/01/12 PHP
php使HTML标签自动补全闭合函数代码
2012/10/04 PHP
thinkPHP5.0框架API优化后的友好性分析
2017/03/17 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
jquery foreach使用示例
2013/09/12 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
2013/11/12 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
JS动态加载当前时间的方法
2015/02/09 Javascript
jQuery简单获取键盘事件的方法
2016/01/22 Javascript
confirm确认对话框的实现方法总结
2016/06/17 Javascript
Bootstrap基本插件学习笔记之按钮(21)
2016/12/08 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
2016/12/15 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
js实现添加删除表格(两种方法)
2017/04/27 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
详谈js中标准for循环与foreach(for in)的区别
2017/11/02 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
2018/12/11 Javascript
vue单页面在微信下只能分享落地页的解决方案
2019/04/15 Javascript
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
2020/07/19 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
jQuery实现购物车全功能
2021/01/11 jQuery
python实现ftp客户端示例分享
2014/02/17 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
PyQt5每天必学之进度条效果
2018/04/19 Python
用pycharm开发django项目示例代码
2019/06/13 Python
django做form表单的数据验证过程详解
2019/07/26 Python
Python实现屏幕录制功能的代码
2020/03/02 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
意大利拉斐尔时尚购物网:Raffaello Network(支持中文)
2018/11/09 全球购物
红领巾广播站广播稿
2014/02/01 职场文书
大学生学习2014年全国两会心得体会
2014/03/12 职场文书
奶茶店创业计划书
2014/08/14 职场文书
小学体育教学随笔
2015/08/14 职场文书