This time I will bring you PHP callback function and anonymous functionuse case analysis, what are the notes when using PHP callback function and anonymous function, The following is a practical case, let’s take a look.
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 Functions don’t want to directly use the function name 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 function
2.1, in php Anonymous functions, also called closures, allow you to specify a function without a name. The most commonly used ones are callback function parametersvalue
<?php $closureFunc = function($str){ echo $str.'<br/>'; }; $closureFunc("hello world!"); //结果 hello world!
2.2, closure
2.2.1, passing in parameters and referencing 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 context, which requires reference passing
<?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, the parameter content passed into the closure can actually be the content of the context object.
The context object value can also be changed within the closure, but it must It is passing by reference
I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the PHP Chinese website!
Recommended reading:
Detailed explanation of the steps to implement one-way hash encryption in PHP
Detailed explanation of the steps to hide the entry file in PHP
The above is the detailed content of PHP callback function and anonymous function use case analysis. For more information, please follow other related articles on the PHP Chinese website!