miketwais

work up

关于call_user_func_array

今天在看php框架源码的时候看到作者用call_user_func_array这个歌函数来处理所有动态的请求,觉得很神奇,也很有效。

关于call_user_func_array这个函数,首先看一看php.net上市如何介绍的:

 

mixed call_user_func_array ( callable $callback , array $param_arr )

把第一个参数作为回调函数(callback)调用,把参数数组作(param_arr)为回调函数的的参数传入。

返回回调函数的结果。如果出错的话就返回FALSE。

示例代码:

<?php
function foobar($arg, $arg2) {
    echo __FUNCTION__, " got $arg and $arg2\n";
}
class foo {
    function bar($arg, $arg2) {
        echo __METHOD__, " got $arg and $arg2\n";
    }
}


// 直接调用foorbar方法,并传两个参数
call_user_func_array("foobar", array("one", "two"));

// 调用foo类的bar方法,并传两个参数
$foo = new foo;
call_user_func_array(array($foo, "bar"), array("three", "four"));
?>
View Code

输出结果为:

foobar got one and two
foo::bar got three and four

如此方便的调用方法并传值可以应用在设计mvc的框架时的路由设计上。请参见下篇文章。
posted @ 2015-05-07 19:17  MasonZhang  阅读(179)  评论(0)    收藏  举报