call_user_func

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

调用第一个参数$callback,$callback为用户自定义方法,同时可选的向该方法传递任意多个$callback方法可接受的参数$parameter

该方法会返回$callback方法的返回值,或者执行失败时返回false

 1 <?php
 2 error_reporting(E_ALL);
 3 function increment(&$var)
 4 {
 5     $var++;
 6 }
 7 
 8 $a = 0;
 9 call_user_func('increment', $a);
10 echo $a."\n";
11 
12 call_user_func_array('increment', array(&$a)); // You can use this instead before PHP 5.3
13 echo $a."\n";
14 /**
15 结果
16 0
17 1
18 */
19 ?>
 1 <?php
 2 
 3 namespace Foobar;
 4 
 5 class Foo {
 6     static public function test() {
 7         print "Hello world!\n";
 8     }
 9 }
10 
11 call_user_func(__NAMESPACE__ .'\Foo::test'); // As of PHP 5.3.0
12 call_user_func(array(__NAMESPACE__ .'\Foo', 'test')); // As of PHP 5.3.0
13 
14 /**
15 Hello world!
16 Hello world!
17 */
18 ?>

该函数第一个参数也可以是数组形式,数组第一个元素为$callback所在累,第二个元素为$callback

 1 <?php   
 2 class myclass {   
 3      function say_hello($name)   
 4      {   
 5          echo "Hello!$name";   
 6      }   
 7 }   
 8   
 9 $classname = "myclass";   
10   
11 //调用类内部的函数需要使用数组方式 array(类名,方法名)   
12 call_user_func(array($classname, 'say_hello'), 'dain_sun');   
13   
14 //print Hello! dain_sun   
15   
16 ?>  

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

call_user_func_array callback $function array $param_arr ) 
调用用户定义的函数,参数为数组形式。
返回值:返回调用函数的结果,或FALSE。

 1 <?php   
 2   
 3 function debug($var, $val)   
 4 {   
 5      echo "variable: $var <br> value: $val <br>";   
 6      echo "<hr>";   
 7 }   
 8   
 9   
10 $host = $_SERVER["SERVER_NAME"];   
11 $file = $_SERVER["PHP_SELF"];   
12   
13 call_user_func_array('debug', array("host", $host));   
14 call_user_func_array('debug', array("file", $file));   
15   
16   
17 ?> 
原文地址:https://www.cnblogs.com/gbyukg/p/2442206.html