1: 익명 함수
클로저 함수라고도 불리는 PHP의 익명 함수를 사용하면 이름 없이 함수를 지정할 수 있습니다. 가장 일반적으로 사용되는 것은 콜백 함수의 매개변수 값입니다.
익명 함수 정의:
$closureFunc = function(){ .... }; eg: 把匿名函数赋值给变量,通过变量来调用 $closureFunc = function($str){ echo $str; }; $closureFunc("hello world!"); 输出: hello world!
2: 클로저
2.1 일반 함수에 익명 함수를 넣거나, 간단한 클로저를 구성하는 익명 함수를 반환할 수 있습니다.
function closureFunc1(){ $func = function(){ echo "hello"; }; $func(); } closureFunc1();//输出: hello
2.2 로컬 변수 참조 익명 함수
function closureFunc2(){ $num = 1; $func = function(){ echo $num; }; $func(); } closureFunc2();//Notice: Undefined variable: num
위 함수를 실행한 후 익명 함수에서는 지역 변수를 사용할 수 없다는 알림 오류가 보고됩니다. 이때 PHP 키워드 사용을 인용해야 합니다. 코드는 다음과 같습니다. Followers
function closureFunc2(){ $num = 1; $func = function() use($num){ echo $num; }; $func(); } closureFunc2();//输出: 1
2.3 익명 함수 반환
function closureFunc3(){ $num = 1; $func = function() use($num){ echo $num; }; return $func; }$func = closureFunc3(); //函数返回匿名函数$func(); //然后我们在用$func() 调用//输出: 1
2.4 익명 함수를 반환할 때 익명 함수에 매개변수를 어떻게 전달하나요? 실제로 일반 함수에 매개변수를 전달하는 것과 같습니다
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
2.5 컨텍스트 참조의 변수 값을 변경하기 위해 클로저를 사용하는 방법은 무엇입니까?
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
위의 입력 결과를 보면 목적이 달성되지 않았음을 알 수 있습니다. 사실 & 참조 기호만 추가하면 됩니다.
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
2.6 익명 함수를 매개변수로 전달
function callFunc($func){ $func("argv"); } callFunc(function($str){ echo $str; })//输出: // argv
위 내용은 PHP의 익명 함수 및 클로저 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!