Home >Backend Development >PHP Tutorial >Detailed explanation of PHP callback functions and anonymous functions
This article mainly introduces the concepts and usage of PHP callback functions and anonymous functions, and analyzes the concepts, functions, usage methods and related operation precautions of PHP callback functions and anonymous functions in detail with examples. Friends in need can refer to the following , Xinwang can help everyone.
1. Callback function
#PHP’s callback function actually has the same function as the callback function in C, Java and other languages. During the execution of the main thread, it suddenly jumps to execute the set callback function;
After the callback function is executed, it returns to the main thread to process the next process
And the callback is called in php For functions, you don’t want to use the function name directly as a function parameter like C and Java. Instead, use the string name corresponding to the function in PHP to execute
1.1, no-parameter callback
<?php //无参数回调 function callback(){ echo 'execute no parameters callback.<br/>'; } function main($callback){ echo 'execute main start.<br/>'; $callback(); echo 'execute main end.<br/>'; } main('callback'); //结果 ecute main start. execute no parameters callback. execute main end.
1.2. Global callback function
<?php //全局函数回调 function callback($a,$b){ echo "$a<====>$b.<br/>"; } $func = 'callback'; call_user_func($func, 1,2); call_user_func_array($func, array(1,2)); //结果 1<====>2. 1<====>2.
1.3. Class method and static method callback
<?php class Test{ //成员函数 function callback($a,$b){ echo "callback $a<====>$b.<br/>"; } public static function staticCallback($a,$b){ echo "staticCallback $a<====>$b.<br/>"; } } //非静态方法调用方式一 $test = new Test(); call_user_func(array($test, 'callback'), 1,2); call_user_func_array(array($test, 'callback'), array(1,2)); //非静态方法调用方式二 $func = 'callback'; $test->$func(7,9); //静态方法调用方式 call_user_func(array('Test', 'staticCallback'), 4,6); call_user_func_array(array('Test', 'staticCallback'), array(4,6)); call_user_func_array("Test::staticCallback", array(4,6)); //结果 callback 1<====>2. callback 1<====>2. callback 7<====>9. staticCallback 4<====>6. staticCallback 4<====>6. staticCallback 4<====>6.
2. Anonymous functions
2.1. Anonymous functions in php (Anonymous functions), also called closures, allow you to specify a function without a name . The most commonly used ones are the parameter values of the callback function
<?php $closureFunc = function($str){ echo $str.'<br/>'; }; $closureFunc("hello world!"); //结果 hello world!
2.2. Closure
2.2.1. Pass in parameters and reference local variables
<?php $closureFunc = function($name){ $sex = '男'; $func = function($age)use ($name,$sex){ echo "$name--$sex--$age<br/>"; }; $func(23); }; $func = $closureFunc("lvfk"); //结果 lvfk--男--23
2.2.2. Return closure function
<?php $closureFunc = function($name){ echo 'closureFunc '; $sex = '男'; echo "$name+++$sex<br/>"; $func = function()use ($name,$sex){ echo "$name--$sex<br/>"; }; return $func; }; $func = $closureFunc("lvfk"); $func(); $func(); //结果 closureFunc lvfk+++男 lvfk--男 lvfk--男
2.2.3. Closure changes the value of the context, which is requiredPass by reference
<?php $closureFunc = function($name){ $age = 1; echo "$name+++$age<br/>"; $func = function()use ($name,&$age){ $age++; echo "$name--$age<br/>"; }; return $func; }; $func = $closureFunc("lvfk"); $func(); $func(); $func(); //结果 lvfk+++1 lvfk--2 lvfk--3 lvfk--4
The above is a simple application of closure. Through closure, we can see that when using closure outside the function, passing in the closure The parameter content can actually be the context object content.
The context object value can also be changed within the closure, but it must be passed by reference.
Related recommendations:
Analysis of PHP callback function
PHP callback function concept and usage
Detailed explanation of the usage of php callback functions and anonymous functions
The above is the detailed content of Detailed explanation of PHP callback functions and anonymous functions. For more information, please follow other related articles on the PHP Chinese website!