A brief analysis of the call user func() function in PHP and how to use call user func to call a custom function, callfunc_PHP tutorial

WBOY
Release: 2016-07-12 09:05:25
Original
3013 people have browsed it

A brief analysis of the call user func() function in PHP and how to use call user func to call a custom function, callfunc

There is a function call_user_func in the UCenter source code, and I thought it was myself at first The result of the defined function cannot be found anywhere. Later I learned that call_user_func is a built-in function of PHP. This function allows users to call directly written functions and pass in certain parameters. Here is a summary of how to use this function.

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

<&#63;php
function nowamagic($a,$b) 
{ 
 echo $a; 
 echo $b; 
} 
call_user_func('nowamagic', "",""); 
call_user_func('nowamagic', "",""); 
//显示  
&#63;>

Copy after login

It’s strange to call the method inside the class. It actually uses array. I don’t know what the developer thought about it. Of course, new is omitted, which is quite innovative:

<&#63;php
class a { 
 function b($c) 
 { 
  echo $c; 
 } 
} 
call_user_func(array("a", "b"),""); 
//显示 
&#63;> 
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 to make the structure of the parameters clearer:

<&#63;php
function a($b, $c) 
{ 
 echo $b; 
 echo $c; 
} 
call_user_func_array('a', array("", "")); 
//显示 
&#63;> 
Copy after login

The call_user_func_array function can also call methods inside the class:

<&#63;php
Class ClassA 
{ 
function bc($b, $c) { 
  $bc = $b + $c; 
echo $bc; 
} 
} 
call_user_func_array(array('ClassA','bc'), array("", "")); 
//显示 
&#63;> 
Copy after login

Both the call_user_func function and the call_user_func_array function support references, which makes them more functionally consistent with ordinary function calls:

<&#63;php
function a($b) 
{ 
 $b++; 
} 
$c = ; 
call_user_func('a', $c); 
echo $c;//显示 
call_user_func_array('a', array($c)); 
echo $c;//显示 
&#63;>
另外,call_user_func函数和call_user_func_array函数都支持引用。
view sourceprint&#63;
<&#63;php
function increment(&$var)
{
 $var++;
}
$a = ;
call_user_func('increment', $a);
echo $a; // 
call_user_func_array('increment', array(&$a)); // You can use this instead
echo $a; // 
&#63;>
Copy after login

The following will introduce how to use call_user_func to call a custom function

Use the call_user_func function to call a custom function by passing in a string function and support references.

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

Call the custom function provided by the first parameter, the following parameters are the parameters of the custom function, and return the result of the custom function

function say($word)
{
 echo $word;
}
call_user_func('say', 'hello world'); //hello world
当然也可以调用类中的方法:
class A {
 function say($word = '')
 {
  echo $word;
 }
} 
$a = new A(); //注意,必须是要实例化的,除非是static
call_user_func(array($a, 'say'), 'hello world'); //hello world
Copy after login

2.mixed call_user_func_array ( callable $callback , array $param_arr )

It is said that call_user_func_array and call_user_func functions have the same function, but there are some differences when calling parameters:

function a($word)
{
 echo $word;
}
class A {
 function say($word = '')
 {
  echo $word;
 }
}
call_user_func_array('a', array('hello world')); //hello world
$a = new A(); //注意,必须是要实例化的,除非是static
call_user_func_array(array($a, 'say'), array('hello world')); //hello world
Copy after login

Note: The other two similar functions are call_user_method and call_user_method_array(), but they were discontinued and abandoned after PHP 4.1

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1068830.htmlTechArticleA brief analysis of the call user func() function in PHP and how to use call user func to call a custom function, callfunc UCenter source There is a function call_user_func in the code, and I thought it was a self-defined function at first...
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