This time for you to bring the PHP callback function and anonymous function use case resolution, PHP callback function and anonymous function use of considerations, the following is the actual case, together to see.
1. Callback function
In fact, the callback function of PHP is exactly the same as the function of the callback function of C, Java and so on, all of which are in the process of executing the main thread and suddenly jump to execute the set callback function;
After the callback function is executed, go back to the main thread to process the next process
Instead of using the function name as a function parameter in PHP, like C and Java, the callback function is executed in PHP using the corresponding string name of the function.
1.1. No parameter callback
<?php//no parameter callback function callback () { echo ' execute no Parameters callback.<br/> ';} function Main ($callback) { echo ' execute main start.<br/> '; $callback (); Echo ' execute main end.<br/> ';} Main (' callback ');//result ecute main start.execute no parameters callback.execute main end.
1.2. Global callback function
<?php//Global function callback function callback ($a, $b) { echo "$a <====> $b .<br/>";} $func = ' callback '; Call_user_func ($func), Call_user_func_array ($func, array);//Results 1<====>2.1<==== >2.
1.3. Class method and static method callback
<?phpclass test{ //member functions function callback ($a, $b) { echo "callback $a <====> $b .<br/>"; } public static function Staticcallback ($a, $b) { echo "Staticcallback $a <====> $b .<br/>"; }} The non-static method calls a $test = new test (), Call_user_func (Array ($test, ' callback '), and Call_user_func_array (Array ($test, ' Callback '), array, or//non-static method call mode Two $func = ' callback '; $test-$func (7,9);//static method call mode Call_user_func (' Test ' , ' Staticcallback '), 4,6), Call_user_func_array (Array (' Test ', ' staticcallback '), Array (4,6)); Call_user_func_array (" Test::staticcallback ", Array (4,6));//Results callback 1<====>2.callback 1<====>2.callback 7<====>9. Staticcallback 4<====>6.staticcallback 4<====>6.staticcallback 4<====>6.
2. anonymous function
2.1, the anonymous function in PHP (Anonymous functions), also known as the closure function (closures), allows you to specify a function without a name. The most common is the parameter value of the callback function
<?php$closurefunc = function ($str) { echo $str. ' <br/> ';}; $closureFunc ("Hello world!"); /Result Hello world!
2.2. Closed Package
2.2.1, passing parameters, referencing local variables
<?php$closurefunc = function ($name) { $sex = ' male '; $func = function ($age) use ($name, $sex) { echo "$name--$sex--$age <br/>"; }; $func (23);}; $func = $closureFunc ("LVFK");//Results lvfk--male--23
2.2.2, return closure function
<?php$closurefunc = function ($name) { echo ' closurefunc '; $sex = ' Male '; echo "$name + + + $sex <br/>"; $func = function () use ($name, $sex) { echo "$name--$sex <br/>"; }; return $func;}; $func = $closureFunc ("LVFK"); $func (); $func ();//Results Closurefunc lvfk+++ male lvfk--male lvfk--male
2.2.3, closures change the value of the context and require 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 ();//Result lvfk+++1lvfk--2lvfk--3lvfk--4
The above is a simple application of the closure, through the closure, you can see the use of closures outside the function, the contents of the packet into the closure, can actually be the content of the context object,
You can also change the value of a context object within a closure, but it must be a reference pass
Believe that you have read the case of this article you have mastered the method, more exciting please pay attention to the PHP Chinese network other related articles!
Recommended reading:
PHP implementation of one-way hash encryption operation steps
PHP Hidden Portal File steps