call_user_func函数类似于一种特别的调用函数的方法,使用方法如下:
function a($b,$c)
{
echo $b;
echo $c;
}
call_user_func('a', "111","222");
call_user_func('a', "333","444");
//显示 111 222 333 444
?>
调用类内部的方法比较奇怪,居然用的是array,不知道开发者是如何考虑的,当然省去了new,也是满有新意的:
class a {
function b($c)
{
echo $c;
}
}
call_user_func(array("a", "b"),"111");
//显示 111
?>
call_user_func_array函数和call_user_func很相似,只不过是换了一种方式传递了参数,让参数的结构更清晰:
function a($b, $c)
{
echo $b;
echo $c;
}
call_user_func_array('a', array("111", "222"));
//显示 111 222
?>
call_user_func_array函数也可以调用类内部的方法的
Class ClassA
{
function bc($b, $c) {
$bc = $b + $c;
echo $bc;
}
}
call_user_func_array(array('ClassA','bc'), array("111", "222"));
//显示 333
?>
call_user_func函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能一致:
function a(&$b)
{
$b++;
}
$c = 0;
call_user_func('a', &$c);
echo $c;//显示 1
call_user_func_array('a', array(&$c));
echo $c;//显示 2
今天在群里面,有个叫lewis的在问call_user_func_array的用法,因为之前一直没有用过,也不能说什么,于是看一下手册,发现是这么写的:
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 otest1 ($a)
{
echo( '一个参数' );
}
function otest2 ( $a, $b)
{
echo( '二个参数' );
}
function otest3 ( $a ,$b,$c)
{
echo( '三个啦' );
}
function otest ()
{
$args = func_get_args();
$num = func_num_args();
call_user_func_array( 'otest'.$num, $args );
}
otest(1,2);
分享到:
相关推荐
`call_user_func` 和 `call_user_func_array` 是 PHP 中两个非常实用的内置函数,用于动态调用其他函数或类的方法。这两个函数提供了一种灵活的方式来执行代码,特别是在需要动态处理函数名或方法名的场景下。 ### ...
call_user_func函数是当需要动态调用函数时,才使用的,这个函数有两种用法:第一种是调用孤独的函数:复制代码 代码如下:<?phpfunction funa($b,$c){ echo $b; echo $c;}call_user_func(‘funa’, “111”,”...
本文将详细介绍两种实现这一目的的方式:`call_user_func` 和 `call_user_func_array` 函数,并结合具体示例进行解析。 #### 一、`call_user_func` `call_user_func` 是一个非常实用的函数,它允许我们通过字符串...
2. **使用魔法函数__call结合call_user_func_array实现** 类似于第一种方法,这里使用`__call`捕获未定义的方法,但不同的是,我们使用`call_user_func_array`来处理参数。`call_user_func_array`可以接收一个数组...
这里定义了一个带有两个参数的`callback`函数,通过字符串名和`call_user_func`或`call_user_func_array`函数调用它。结果输出了两个参数的字符串。 实例1.3中演示了类方法和静态方法作为回调函数的使用。这里通过`...
本文实例讲述了PHP回调函数与匿名函数。分享给大家供大家参考,具体如下: 回调函数和匿名函数 ...PHP中有许多 “需求参数为函数” 的函数,像array_map,usort,call_user_func_array之类,他们执行传入的函数
3. `call_user_func`和`call_user_func_array`是实现动态函数调用的两种方法,区别在于它们处理参数的方式。 4. 当不使用`__call`魔法函数时,可以直接在类中定义具体的方法实现,这种方法更简单且执行效率更高。 ...
5. **`call_user_func()` 和 `call_user_func_array()`** - **功能**: 这两个函数分别用于调用用户定义的回调函数,并传入参数。`call_user_func_array()`还可以接收一个参数数组。 - **风险**: 如果回调函数是由...
总之,通过理解Yii2中__call魔术方法的使用和call_user_func_array函数的作用,我们可以掌握如何将行为的方法注入到组件类中,从而在不修改组件类本身的情况下扩展其功能。这种机制增强了代码的可维护性和可重用性,...
- 可以使用 `call_user_func()` 和 `call_user_func_array()` 来调用回调函数。 - `call_user_func()` 接受一个回调函数作为第一个参数,其余参数作为回调函数的参数传递。 - `call_user_func_array()` 接受一个...
`call_user_func`可以接受一个回调函数和它的参数,然后执行它。 ```php function getCounter() { $i = 0; return function() use ($i) { echo $i; }; } $counter = getCounter(); echo $counter(); // 输出 1...
call_user_func_array([$controllerInstance, $method], $params); } else { // 处理无效的控制器或方法 } } else { // 处理无效的控制器 } } // 示例请求:/user/index parse_str(parse_url($_SERVER['...
- 如果找到当前时间的任务,通过`call_user_func_array()`调用回调函数,并传递参数。 - 持久化的任务会在完成执行后重新添加到任务列表,等待下次唤醒。 在实际开发中,可以根据业务需求调整任务的调度策略,...
echo call_user_func($func, 5); ``` - **iterable**: 可迭代类型,用于存储可以迭代的对象(如数组或实现了 Iterator 接口的对象)。 ```php $arr = [1, 2, 3]; foreach ($arr as $value) { echo $value . ...
而在`call_user_func_array`函数中,如果需要引用传参,必须在参数前加上`&`。 3. **函数的引用返回** 函数可以返回一个引用,这在处理静态变量或对象属性时特别有用。例如: ```php function &test() { static...