php的callback类型小记
很早以前在学习session的时候,其中有个session_set_save_handler()方法可以自定义session读写、销毁、回收动作,也就是通过这个方法实现将session保存进数据库的。当然,大多数时候看到的代码是定义几个函数:function sess_open(){} function sess_close(){}……,然后使用session_set_save_handler()将前面的函数名一一对应起来,这里是用字符串来表示函数名的。这就是php的callback类型,这是php4时代的写法,在php5和php面向对象编程迅速流行起来以后,在callback这里起了一点点的变化,我们看到了使用数组,即形如:session_set_save_handler( array( ’session_cls’, ‘open’ ), array( ’session_cls’, ‘close’ ), array( ’session_cls’, ‘read’ ), array( ’session_cls’, ‘write’ ), array( ’session_cls’, ‘destroy’ ), array( ’session_cls’, ‘gc’ ) ),明显多出一个类名,并且随着我阅读的优秀的开源项目的代码越来越多,这种callback的调用形式越发频繁,到后来就干脆全是这样子的了。
我并没有去深究这个东西,只是觉得略微不适应,看的多了也就懂了,还有很多的插件机制里的call_user_func(),call_user_func_array() ,写的时候有些依样画葫芦的意思,因为结果是正确的,企图翻阅php手册无果,便上google 百度了一把,功夫不负有心人,不负有心人!找到了颇为有力的确切说明,示例代码如下:
<?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手册,搜索我还是习惯谷歌啊。是的,从上面的代码可以看出,callback类型可以是一个字符串表示的函数名,可以是一个数组包括类名和方法名,还可以是一个实例化了的对象和方法名。挺灵活,艾哈!今日的知识虽然显得“很是陈旧”,但让我很是豁然开朗,找到确切的答案真是一件让人痛快的事情!
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:gently 来源: Zend Studio
- 标签: callback
- 发布时间:2010-06-28 23:58:23
- [65] Oracle MTS模式下 进程地址与会话信
- [65] Go Reflect 性能
- [64] 如何拿下简短的域名
- [59] android 开发入门
- [59] IOS安全–浅谈关于IOS加固的几种方法
- [58] 图书馆的世界纪录
- [58] 【社会化设计】自我(self)部分――欢迎区
- [53] 视觉调整-设计师 vs. 逻辑
- [47] 界面设计速成
- [46] 读书笔记-壹百度:百度十年千倍的29条法则