[PHP] Funciones y cierres anónimos

Función anónima


La sintaxis de las funciones anónimas es:
function(){
    
    
	//函数体
	};//注意分号

Debido a que estas funciones no se pueden ejecutar, generalmente se guardan en variables:

$func = function(){
    
    
	echo 'Hello World';
	};

Luego, cuando se llama, es como una función de devolución de llamada.

$func();

Entonces, ¿por qué debería haber funciones anónimas?


La razón es: la
variable guarda una función, esencialmente obteniendo un objeto (cierre),
que también es un cierre

Cierre

Probablemente significa que la función interna puede acceder a las variables de la función externa incluso si la función externa ha finalizado (devuelto).
En circunstancias normales, la función return significa liberación, es decir, las variables internas desaparecen y no se puede acceder a ellas. Pero el cierre puede evitar su liberación y no ser reciclado por el sistema.

como

function display(){
    
    
	//定义一个局部变量
	$name = 'tattoo';
	//定义匿名函数
	$innerfunction = function(){
    
    
		echo $name;//这里试图调用外面的name函数	
	}
}
display();

El resultado definitivamente será un error, porque el nombre no se puede pasar a la función interna


¿Cómo podemos conectar la función anónima con la función externa?
Puede agregar un uso después de la función

function display(){
    
    
	//定义一个局部变量
	$name = 'tattoo';
	//定义匿名函数
	$innerfunction = function() use($name){
    
    
		echo $name;//这里试图调用外面的name函数	
	}
}
display();

Esto forma un cierre.


Combinando con el conocimiento de los parámetros de paso aprendidos anteriormente, podemos saber: la variable de nombre utilizada en el uso anterior es en realidad una versión copiada y no cambiará el valor del nombre original,
por lo que se puede escribir como & $ nombre

Supongo que te gusta

Origin blog.csdn.net/qq_44899247/article/details/105956355
Recomendado
Clasificación