Detailed explanation of usage examples of php functions call_user_func and call_user_func_array

伊谢尔伦
Release: 2023-03-11 13:38:01
Original
2003 people have browsed it

When I looked at UCenter, there was a function call_user_func. I was puzzled because I thought it was a function defined by myself, but I couldn’t find it anywhere. After searching on Baidu, I found out that call_user_func is Built-in function

The call_user_func function is similar to a special method of calling a function. The method of use is as follows:

function a($b,$c) 
{ 
echo $b; 
echo $c; 
} 
call_user_func('a', "111","222"); 
call_user_func('a', "333","444"); 
//显示 111 222 333 444
Copy after login

It is strange to call the method inside the class, but it is used It is an array. I don’t know how the developers considered it. Of course, new is omitted, which is also full of novelty:

class a { 
function b($c) 
{ 
echo $c; 
} 
} 
call_user_func(array("a", "b"),"111"); 
//显示 111
Copy after login

The call_user_func_array function is very similar to call_user_func, except that the parameters are passed in a different way. Make the structure of parameters clearer:

function a($b, $c) 
{ 
echo $b; 
echo $c; 
} 
call_user_func_array('a', array("111", "222")); 
//显示 111 222
Copy after login

The call_user_func_array function can also call methods inside the class

Class ClassA 
{ 
function bc($b, $c) { 
$bc = $b + $c; 
echo $bc; 
} 
} 
call_user_func_array(array('ClassA','bc'), array("111", "222")); 
//显示 333
Copy after login

Both the call_user_func function and the call_user_func_array function support references, which makes them and Ordinary function calls tend to have consistent functions:

function a(&$b) 
{ 
$b++; 
} 
$c = 0; 
call_user_func('a', &$c); 
echo $c;//显示 1 
call_user_func_array('a', array(&$c)); 
echo $c;//显示 2
Copy after login

Simple usage of call_user_func_array in php

<?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"; 
} 
} 
// Call the foobar() function with 2 arguments 
call_user_func_array("foobar", array("one", "two")); 
// Call the $foo->bar() method with 2 arguments 
$foo = new foo; 
call_user_func_array(array($foo, "bar"), array("three", "four")); 
?>
Copy after login

The output of the above routine is similar to:
foobar got one and two
foo::bar got three and four
Example #2 call_user_func_array() using namespace name

<?php 
namespace Foobar; 
class Foo { 
static
 public function test($name) { 
print "Hello {$name}!\n"; 
} 
} 
// As of PHP 5.3.0 
call_user_func_array(NAMESPACE .&#39;\Foo::test&#39;, array(&#39;Hannes&#39;)); 
// As of PHP 5.3.0 
call_user_func_array(array(NAMESPACE .&#39;\Foo&#39;, &#39;test&#39;), array(&#39;Philip&#39;)); 
?>
Copy after login

The output of the above routine is similar to:
Hello Hannes!
Hello Philip!
Example #3 Using lambda function

<?php 
$func = function($arg1, $arg2) { 
return $arg1 * $arg2; 
}; 
var_dump(call_user_func_array($func, array(2, 4))); /* As of PHP 5.3.0 */ 
?>
Copy after login

The above routine will output:
int(8)

The above is the detailed content of Detailed explanation of usage examples of php functions call_user_func and call_user_func_array. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template