>백엔드 개발 >PHP 튜토리얼 >PHP의 익명 함수 및 클로저에 대한 자세한 설명

PHP의 익명 함수 및 클로저에 대한 자세한 설명

怪我咯
怪我咯원래의
2017-06-28 11:02:371121검색

1가지 기능. 가장 일반적으로 사용되는 것은 콜백 함수의 매개변수 값입니다. 익명 함수 정의:

$closureFunc = function(){

    ....

 };
예: 익명 함수를

변수

에 할당하고

 $closureFunc = function($str){

   echo $str;

  };  $closureFunc("hello world!");
변수를 통해 호출합니다. 출력: hello world!

2: 패키지 닫기

2.1 일반 함수에 익명 함수를 넣고, 간단한 클로저를 구성하는 익명 함수를 반환할 수도 있습니다.

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

2.2

Reference로컬 변수

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

위 함수가 실행되면 이와 같은 익명 함수에서는 로컬 변수를 사용할 수 없다는 알림 오류가 보고됩니다. 이때 PHP 키워드 사용을 인용해야 합니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.