>  기사  >  백엔드 개발  >  외부 변수를 얻는 PHP 클로저와 전역 키워드 선언 간의 차이점에 대한 설명

외부 변수를 얻는 PHP 클로저와 전역 키워드 선언 간의 차이점에 대한 설명

韦小宝
韦小宝원래의
2017-12-05 09:32:401328검색

Closure는 일반적인 개념이므로 일반적으로 Callback 함수와 함께 사용하여 코드를 더 간결하고 읽기 쉽게 만들 수 있습니다. 이번 글에서는 주로 PHP 클로저 외부 변수 가져오기와 전역 키워드를 사용한 변수 선언의 차이점을 소개합니다. PHP 클로저 외부 변수 가져오기에 대한 글을 살펴보겠습니다.

최근 Workerman을 배우면서 콜백 함수에 대해 더 자주 접하게 되었습니다. 사용하는 동안 워커를 사용하는 방법이 다르기 때문에 이 두 가지 방법을 자주 사용합니다. 클로저 획득. 외부 변수와 전역 키워드 선언 변수의 차이점.

클로저

클로저는 일반적인 개념으로, 일반적으로 코드를 더 간결하고 읽기 쉽게 만들기 위해 콜백 함수와 함께 사용할 수 있습니다.

클로저는 함수가 복사를 통해 상위 범위의 변수를 사용하도록 할 수 있습니다. 예:


$global = 'hello';
$bbb = function()use($global){
  echo $global."\n";
};
$bbb();
//输出 'hello'


global을 통해 변수를 선언하면 함수 본문이 함수 외부에서 변수를 호출할 수도 있지만 global은 전역 키워드를 사용하는 것과 다릅니다. 외부 변수와 동일한 이름을 가진 reference를 생성하고 함수 내의 변수를 수정하면 외부 변수의 범위도 지정됩니다.

$global = 'hello';
$fun = function(){
  global $global;
  $global =' world';
  echo $global."\n";
};
$fun();
// 输出 'world'


이것은 단지 동일한 이름의 참조를 생성하는 것이며 원래 외부 변수 $global의 범위를 변경하지 않습니다. 즉, 다른 함수에서 호출하려면 여전히 a를 선언하거나 사용해야 합니다. closure


$global = 'hello';
$fun = function(){
  global $global;
  $global =' world';
  echo 'a:'.$global."\n";
};
$ccc = function(){
  echo 'b:'.$global;
};
$fun()
$ccc()
/*


Output


a: world
Notice: Undefined variable: global in xxxxxxx on line xx
*/


두 가지 접근 방식인 변수의 전역 키워드 선언과 클로저의 차이점을 비교하기 쉽도록 코드를 살짝 변경해 보세요. 외부 변수.


<?php
$global = &#39;hello&#39;;
$fun = function(){
  global $global;
  $global =&#39;world&#39;;
  echo &#39;a:&#39;.$global."\n";
};
$bbb = function()use($global){
  $global = &#39;china&#39;;
  echo &#39;c:&#39;.$global."\n";
};
$fun();
echo &#39;b:&#39;.$global."\n";
$bbb();
echo &#39;d:&#39;.$global;


두 출력 b와 d에서 global이 외부 변수의 값을 변경하지만 클로저 메서드는 그렇지 않음을 알 수 있습니다.


출력:

a: world
b: world
c:china
d: world


마지막으로 공식 문서에서

익명 함수
, 클로저 및 콜백 함수를 사용하는 좀 더 전형적인 예를 게시하겠습니다.

요약

위는 외부 변수를 얻기 위한 PHP 클로저와 변수를 선언하기 위한 전역 키워드의 차이점에 대한 편집자의 소개입니다. 궁금한 점이 있으면 커뮤니티에 문의하세요. Q&A는 이 사이트에서 물어보세요!


관련 권장 사항:

PHP 클로저 기능의 실제 적용 지침

PHP 클로저란 무엇입니까? 클로저 사용법 예에 대한 자세한 설명

php 클로저 구문 연구 1

위 내용은 외부 변수를 얻는 PHP 클로저와 전역 키워드 선언 간의 차이점에 대한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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