php回调函数必需知道的几种方法
作者:admin 日期:2014-06-01
php回调函数的几种方法
PHP回调函数用的场合还是挺多的,特别是一些用到模式的地方。这篇文章就小小的总结一下PHP的回调函数的几种形式。
先看下PHP手册对一个函数的介绍,因为实现调用回调函数和这个函数分不开。
第一种, 常规的php全局函数
两种调用方式都可以成功调用, 说明call_user_func_array调用常规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 parametersDescriptionmixed call_user_func_array ( callback function, array param_arr )Call a user defined function given by function, with the parameters in param_arr |
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
|
第二种, 类的静态方法
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}是存在的。
评论: 0 | 查看次数: 11854