Detailed explanation of PHP callback functions and anonymous functions

小云云
Release: 2023-03-21 17:04:01
Original
1471 people have browsed it

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 &#39;execute no parameters callback.<br/>&#39;;
}
function main($callback){
  echo &#39;execute main start.<br/>&#39;;
  $callback();
  echo &#39;execute main end.<br/>&#39;;
}
main(&#39;callback&#39;);
//结果
ecute main start.
execute no parameters callback.
execute main end.
Copy after login

1.2. Global callback function


<?php
//全局函数回调
function callback($a,$b){
  echo "$a<====>$b.<br/>";
}
$func = &#39;callback&#39;;
call_user_func($func, 1,2);
call_user_func_array($func, array(1,2));
//结果
1<====>2.
1<====>2.
Copy after login

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, &#39;callback&#39;), 1,2);
call_user_func_array(array($test, &#39;callback&#39;), array(1,2));
//非静态方法调用方式二
$func = &#39;callback&#39;;
$test->$func(7,9);
//静态方法调用方式
call_user_func(array(&#39;Test&#39;, &#39;staticCallback&#39;), 4,6);
call_user_func_array(array(&#39;Test&#39;, &#39;staticCallback&#39;), 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.
Copy after login

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.&#39;<br/>&#39;;
};
$closureFunc("hello world!");
//结果
hello world!
Copy after login

2.2. Closure

2.2.1. Pass in parameters and reference local variables


<?php
$closureFunc = function($name){
  $sex = &#39;男&#39;;
  $func = function($age)use ($name,$sex){
    echo "$name--$sex--$age<br/>";
  };
  $func(23);
};
$func = $closureFunc("lvfk");
//结果
lvfk--男--23
Copy after login

2.2.2. Return closure function


<?php
$closureFunc = function($name){
  echo &#39;closureFunc &#39;;
  $sex = &#39;男&#39;;
  echo "$name+++$sex<br/>";
  $func = function()use ($name,$sex){
    echo "$name--$sex<br/>";
  };
  return $func;
};
$func = $closureFunc("lvfk");
$func();
$func();
//结果
closureFunc lvfk+++男
lvfk--男
lvfk--男
Copy after login

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
Copy after login

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!

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