php回调函数必需知道的几种方法

 php回调函数的几种方法

 
PHP回调函数用的场合还是挺多的,特别是一些用到模式的地方。这篇文章就小小的总结一下PHP的回调函数的几种形式。
 
先看下PHP手册对一个函数的介绍,因为实现调用回调函数和这个函数分不开。

call_user_func_array

(PHP 4 >= 4.0.4, PHP 5)

call_user_func_array --  Call a user function given with an array of parameters

Description

mixed call_user_func_array ( callback function, array param_arr )

Call a user defined function given by function, with the parameters in param_arr

第一种, 常规的php全局函数
 
function test($echo)
{
 echo $echo, "\n";
}
 
$param = array("www.zeroplace.cn");
 
call_user_func_array(test, $param);
call_user_func_array("test", $param);
 
输出: 
www.zeroplace.cn www.zeroplace.cn
两种调用方式都可以成功调用, 说明call_user_func_array调用常规php局函数时的第一个参数可以为函数本身,也可以为表示函数名的字符串。
 
第二种, 类的静态方法
class TestC
{
 static function test($echo)
 {
  echo $echo, "\n";
 }
}
 
$param = array("www.zeroplace.cn");
 
call_user_func_array(array(TestC, "test"), $param);
call_user_func_array(array("TestC", "test"), $param);
 
输出: 
www.zeroplace.cn www.zeroplace.cn
这时传第一个参数的时候传了一个数据。数组的第一个元素可以为类本身,也可以为类名的一个字符串。第二个元素则是一个表示方法名的字符串。
 
第三种,对象的方法
class TestC
{
 protected $_a = "hello word";
 
 function test($echo)
 {
  $this->_a = $echo;
 }
 
 function show()
 {
  echo $this->_a, "\n";
 }
}
 
$param = array("www.zeroplace.cn");
$obj = new TestC();
call_user_func_array(array($obj, "test"), $param);
$obj->show();
$obj->test("WEB应用开发");
$obj->show();
 
输出: 
www.zeroplace.cn WEB应用开发
这里是调用一个对象的方法。从test方法中设置对象的_a成员,然后通过show方法将它显示出来,以验证call_user_func_array调用方法时可以正确等到$this指针。这里输出的结果表明已经上面的方法是奏效的。其实回调对象的方法还有一种更加简单的方法,直接$obj->{$method}()就可以调用,只要{$method}是存在的。


文章来自: 本站原创
Tags:
评论: 0 | 查看次数: 11450