Detailed explanation of anonymous functions and closure examples in php

陈政宽~
Release: 2023-03-11 17:36:01
Original
948 people have browsed it

1: Anonymous function

The anonymous function in php, also called the closure function, allows you to specify a function without a name. The most commonly used one is the parameter value of the callback function.

Definition of anonymous function:

$closureFunc = function(){    .... }; eg: 把匿名函数赋值给变量,通过变量来调用 $closureFunc = function($str){   echo $str; }; $closureFunc("hello world!"); 输出: hello world!
Copy after login

2: Closure

2.1 Put the anonymous function in a normal function, or you can return the anonymous function, which constitutes a Simple closure

function closureFunc1(){ $func = function(){ echo "hello"; }; $func(); } closureFunc1();//输出: hello
Copy after login


2.2 Referring to local variables in anonymous functions

function closureFunc2(){ $num = 1; $func = function(){ echo $num; }; $func(); } closureFunc2();//Notice: Undefined variable: num
Copy after login


After the above function is run, A Notice error will be reported, indicating that we cannot use local variables in anonymous functions. At this time, we need to quote a PHP keyword use. The code is as follows

function closureFunc2(){ $num = 1; $func = function() use($num){ echo $num; }; $func(); } closureFunc2();//输出: 1
Copy after login


2.3 Return to anonymous Function

function closureFunc3(){ $num = 1; $func = function() use($num){ echo $num; }; return $func; }$func = closureFunc3(); //函数返回匿名函数$func(); //然后我们在用$func() 调用//输出: 1
Copy after login


2.4 How do we pass parameters to the anonymous function when we return it? In fact, it is the same as passing parameters to a normal function

function closureFunc4(){ $num = 1; $func = function($str) use($num){ echo $num; echo "\n"; echo $str; }; return $func; }$func = closureFunc4();$func("hello, closure4");//输出: //1 //hello, closure4
Copy after login


2.5 How to use closures to change the variable values referenced by the context?

function closureFunc5(){ $num = 1; $func = function() use($num) { echo "\n"; $num++; echo $num; }; echo "\n"; echo $num; return $func; }$func = closureFunc5();$func();$func();$func();//输出: // 1 // 2 // 2 // 2
Copy after login


Looking at the above input results, it is obvious that the purpose has not been achieved. In fact, just add an & reference symbol.

function closureFunc5(){ $num = 2; $func = function() use(&$num) { echo "\n"; $num++; echo $num; }; echo "\n"; echo $num; return $func; }$func = closureFunc5();$func();$func();$func();//输出: // 2 // 3 // 4 // 5
Copy after login


2.6 Pass anonymous functions as parameters

function callFunc($func){ $func("argv"); } callFunc(function($str){ echo $str; })//输出: // argv
Copy after login


The above is the detailed content of Detailed explanation of anonymous functions and closure examples in php. 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
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!