`
天梯梦
  • 浏览: 13731005 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

call_user_func和call_user_func_array的用法

阅读更多

call_user_func ( callback $function [, mixed $parameter [, mixed $... ]] )

调用第一个参数所提供的用户自定义的函数。
返回值:返回调用函数的结果,或FALSE。

example

<?php
function eat($fruit) //参数可以为多个
{
     echo "You want to eat $fruit, no problem";
}
call_user_func('eat', "apple"); //print: You want to eat apple, no problem;
call_user_func('eat', "orange"); //print: You want to eat orange,no problem;
?>
 


调用类的内部方法:

<?php
class myclass {
     function say_hello($name)
     {
         echo "Hello!$name";
     }
}

$classname = "myclass";

//调用类内部的函数需要使用数组方式 array(类名,方法名)
call_user_func(array($classname, 'say_hello'), 'dain_sun');

//print Hello! dain_sun

?>
 

call_user_func_array 函数和 call_user_func 很相似,只是 使 用了数组 的传递参数形式,让参数的结构更清晰:

call_user_func_array ( callback $function , array $param_arr )

调用用户定义的函数,参数为数组形式。
返回值:返回调用函数的结果,或FALSE。

<?php

function debug($var, $val)
{
     echo "variable: $var <br> value: $val <br>";
     echo "<hr>";
}


$host = $_SERVER["SERVER_NAME"];
$file = $_SERVER["PHP_SELF"];

call_user_func_array('debug', array("host", $host));
call_user_func_array('debug', array("file", $file));


?>
 



调用类的内部方法和 call_user_func 函数的调用方式一样,都是使用了数组的形式来调用。


exmaple:

<?php

class test
{
      function debug($var, $val)
      {
          echo "variable: $var <br> value: $val <br>";
          echo "<hr>";
      }
}

$host = $_SERVER["SERVER_NAME"];
$file = $_SERVER["PHP_SELF"];

call_user_func_array(array('test', 'debug'), array("host", $host));
call_user_func_array(array('test', 'debug'), array("file", $file));

?>
 



注:call_user_func 函数和call_user_func_array函数都支持引用。

<?php
function increment(&$var)
{
    $var++;
}

$a = 0;
call_user_func('increment', $a);
echo $a; // 0

call_user_func_array('increment', array(&$a)); // You can use this instead
echo $a; // 1
?>
 




分享到:
评论

相关推荐

    php自定义函数call_user_func和call_user_func_array详解

    总结来说,`call_user_func` 和 `call_user_func_array` 提供了一种动态调用函数和类方法的能力,它们使得在编程时能更加灵活地处理函数调用,特别是在处理未知或动态生成的函数名和参数列表时。它们是 PHP 中实现元...

    PHP中call_user_func_array回调函数的用法示例

    call_user_func_array call_user_func_array — 调用回调函数,并把一个数组参数作为回调函数的参数 mixed call_user_func_array ( callable $callback , array $param_arr ) 把第一个参数作为回调函数(callback)...

    PHP call_user_func和call_user_func_array函数的简单理解与应用分析

    在PHP编程语言中,`call_user_func` 和 `call_user_func_array` 是两个非常重要的函数,它们用于动态地调用用户定义的函数或方法。这两个函数允许开发者在运行时根据需求执行不同的操作,增强了代码的灵活性和可扩展...

    PHP 函数call_user_func和call_user_func_array用法详解

    call_user_func函数是当需要动态调用函数时,才使用的,这个函数有两种用法:第一种是调用孤独的函数:复制代码 代码如下:&lt;?phpfunction funa($b,$c){ echo $b; echo $c;}call_user_func(‘funa’, “111”,”...

    解析php中call_user_func_array的作用

    }//调用test方法,array(“asp”, ‘php’)对应相应的参数call_user_func_array(‘test’, array(“asp”, ‘php’)); 二、通过类调用类中的方法复制代码 代码如下:class test2{function phpSay($a, $b) {echo ‘测试...

    php代码-call_user_func and call_user_func_array

    在PHP编程语言中,`call_user_func` 和 `call_user_func_array` 是两个非常重要的函数,它们用于在运行时调用用户定义的函数或者方法。这两个函数为动态执行代码提供了便利,是PHP中的回调函数机制的重要组成部分。...

    PHP中call_user_func_array()函数的用法演示

    这里,我们传入了一个数组,其中包含了类名 `TestClass` 和方法名 `write`,`call_user_func_array()` 将会调用 `TestClass` 类的 `write` 方法,并传入字符串 `'NO.1 www.chhua.com'` 作为参数。 `call_user_func_...

    php中call_user_func函数使用注意事项

    最后,使用call_user_func或call_user_func_array时要确保传入的回调是有效的,并且当传入对象的方法时,对象实例必须已经创建。在使用call_user_func来调用方法时,如果方法不存在,或者传入的参数不正确,将会引发...

    call_user_func:call_user_func()的基准研究

    call_user_func 和通常被称为“慢”。 在某个时候,我需要知道这会对涉及大量可调用呼叫的流程有多大影响。问题Callable可以有多种形式,可以是字符串,lambda数组或Closure。 如果要泛型调用Callable,则简单的方法...

    浅析PHP中call user func()函数及如何使用call user func调用自定义函数

    在PHP编程语言中,`call_user_func()` 和 `call_user_func_array()` 是两个非常重要的回调函数,它们允许程序员以动态的方式调用其他函数或方法。这两个函数为代码提供了更大的灵活性,尤其是在处理回调、事件驱动...

Global site tag (gtag.js) - Google Analytics