>백엔드 개발 >PHP 문제 >클로저 (익명 함수) 란 무엇이며 PHP에서 어떻게 사용합니까?

클로저 (익명 함수) 란 무엇이며 PHP에서 어떻게 사용합니까?

Johnathan Smith
Johnathan Smith원래의
2025-03-10 18:11:06675검색

클로저 (익명 함수) 란 무엇이며 PHP에서 어떻게 사용합니까?

익명 함수라고도하는 폐쇄는 이름으로 선언되지 않은 함수입니다. 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에서 클로저를 사용함으로써 실질적인 이점은 무엇입니까?

클로저는 PHP의 정기적 인 함수에 비해 몇 가지 장점을 제공합니다 :

  • 간단한 기능의 경우 더 많은 Compact 신디후리를 제공합니다. 이것은 한 번만 사용되는 콜백 또는 작은 도우미 기능에 특히 유용합니다.
  • 어휘 클로즈 : 주변 범위 (어휘 스코핑)에서 변수에 액세스하는 능력이 핵심 이점입니다. 이를 통해 글로벌 변수에 의존하지 않고 상태를 유지하는 기능을 만들어 클리너 및 유지 관리 가능한 코드로 이어질 수 있습니다.
  • 유연성 : 클로저는 다른 기능에 인수로 쉽게 전달 될 수있어 고차 기능 (다른 기능을 인수 또는 반환 기능으로 취하는 기능)에 이상적입니다. 이를 통해 PHP의 기능 프로그래밍 패러다임을 가능하게합니다.
  • 코드 재사용 (제한된 맥락에서) : 더 넓은 의미에서 명명 된 기능만큼 재사용 할 수는 없지만, 특정 기능 내에서 반복적 인 작업에 특히 유용한 동일한 범위 내에서 폐쇄는 재사용 될 수 있습니다. 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의 클로저는 콜백 또는 이벤트 처리와 같은 다른 고급 기능과 함께 사용할 수 있습니까?

    예, 클로저는 콜백 및 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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