익명 함수라고도하는 폐쇄는 이름으로 선언되지 않은 함수입니다. function
키워드를 사용하여 정의 된 다음 매개 변수 (있는 경우)에 대한 한 쌍의 괄호와 함수 본문을 포함하는 곱슬 버팀대 쌍을 사용합니다. PHP에서는 주변 범위가 실행 된 후에도 주변 범위에서 변수에 액세스 할 수 있기 때문에 클로저는 특히 강력합니다. 이것을 변수에 대한 폐쇄로 알려져 있습니다.
간단한 예는 다음과 같습니다.
<code class="php"> & lt;? php $ message = & quot; 외부에서 hello! "; $ closure = function () 사용 ($ message) {echo $ message; }; $ closure (); // 출력 : 외부에서 안녕하세요! ? & gt; </code>
이 예에서 $ Closure
는 폐쇄입니다. 폐쇄 범위 외부에서 정의되는 변수 $ 메시지
에 액세스합니다. use ($ message)
키워드가 중요합니다. 부모의 범위에서 $ 메시지
변수를 "캡처"하는 폐쇄를 명시 적으로 알려줍니다. use ($ message)
가 없으면 PHP는 $ message
가 클로저의 범위 내에서 사용할 수 없으므로 오류를 던질 것입니다.
클로저에 인수를 전달할 수도 있습니다 :
<code class="php">? & lt;? php $ greet = function ($ name) {echo & quot; hello; . $ 이름. "!" }; $ greet ( "World & quot;); // 출력 : 안녕하세요, 세계! ? & gt; </code>
클로저는 PHP의 정기적 인 함수에 비해 몇 가지 장점을 제공합니다 :
폐쇄로 변수를 전달 :
변수는 일반 함수와 마찬가지로 함수 정의의 매개 변수 목록을 통해 폐쇄로 전달됩니다. 주변 범위의 변수의 경우 use
키워드와 괄호로 둘러싸인 변수 목록을 사용합니다. aude
문의 변수 이름
<code class="php"> & lt;? php $ x = 10; $ closure = function ($ y) 사용 ($ x) {return $ x $ y; }; echo $ 폐쇄 (5); // 출력 : 15 $ ClosureByRef = function (& amp; $ Z) 사용 (& amp; $ x) {$ x = 20; $ z = $ x * 2; }; $ W = 5; $ ClosureByRef ($ W); 에코 $ x; // 출력 : 20 echo $ w; // 출력 : 40? & gt; </code>
클로저에서 변수 전달 :
정기적 인 함수와 마찬가지로 return
문을 사용하여 클로저에서 값을 반환 할 수 있습니다. 그런 다음 반환 된 값은 폐쇄 외부의 변수에 할당 될 수 있습니다.
<code class="php"> & lt;? php $ closure = function ($ a, $ b) {return $ a * $ b; }; $ result = $ 폐쇄 (4, 5); // $ 결과는 20 Echo $ 결과입니다. ? & gt; </code>
예, 클로저는 콜백 및 PHP의 이벤트 처리와 같은 고급 기능과 함께 자주 사용됩니다. 유연성과 간결한 구문으로 인해 이러한 시나리오에 완벽하게 적합합니다.
콜백 : 클로저는 호출 가능한 인수를 기대하는 함수로 콜백으로 전달 될 수 있습니다. 예를 들어, array_map
, array_filter
및 usort
와 같은 배열 함수는 종종 배열 요소를 처리하기위한 콜백으로 폐쇄됩니다. $ squaredNumbers = array_map (function ($ n) {return $ n * $ n;}, $ 숫자); print_r ($ squarednumbers); // 출력 : 배열 ([0] = & gt; 1] = & gt; 4 [2] = & gt; 9 [3] = & gt; 16 [4] = & gt; 25)? 이벤트가 발생하면 해당 폐쇄가 실행됩니다. 이를 통해 디퍼 커플 링 및 모듈 식 코드가 가능합니다. 예를 들어, 가상의 이벤트 시스템에서 :
<code class="php"> & lt;? php // 가상 이벤트 시스템-실제 이벤트 시스템으로 바꾸십시오. $ eventManager- & gt; on ( 'userLoggedIn', function (//) {// echo quot;, & gt (getusern) in. "; quot ;;}); ? & gt; </code>
요약하면, 클로저는 PHP의 다재다능하고 강력한 기능이며 코드 가독성 향상, 유연성 향상 및 고급 프로그래밍 패턴에서 효율적인 사용을 가능하게합니다.
위 내용은 클로저 (익명 함수) 란 무엇이며 PHP에서 어떻게 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!