Home  >  Article  >  Backend Development  >  Detailed explanation of the use of PHP callback functions and anonymous functions

Detailed explanation of the use of PHP callback functions and anonymous functions

php中世界最好的语言
php中世界最好的语言Original
2018-03-24 11:28:401607browse

This time I will bring you PHP callback function and anonymous functiondetailed explanation of usage, precautionsfor using PHP callback function and anonymous function, what are the following? This is a practical case, let’s take a look at it.

The examples in this article describe the concepts and usage of PHP callback functions and anonymous functions. Share it with everyone for your reference, the details are as follows:

1. Callback function

The callback function of PHP is actually the same as that of C, Java and other languages The function of the callback function is exactly the same. 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 handle the next process

When calling the callback function in PHP, you don’t want to directly use the function name as the 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/>';
}
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. Anonymous functions in PHP, 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 the 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

I believe you have mastered it after reading the case in this article For more exciting methods, please pay attention to other related articles on the php Chinese website!

Recommended reading:

PHP directly implements the generation of poster advertisements

##PHP determines whether WeChat or browser opens

The above is the detailed content of Detailed explanation of the use of PHP callback functions and anonymous functions. For more information, please follow other related articles on the PHP Chinese website!

Statement:
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
Previous article:How to use PHP generatorNext article:How to use PHP generator