>  기사  >  백엔드 개발  >  PHP의 익명 함수 및 클로저 예제에 대한 자세한 설명

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

陈政宽~
陈政宽~원래의
2017-06-28 11:23:391004검색

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

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