Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP $GLOBALS 완벽 정리 – 전역 변수에 접근하는 슈퍼 글로벌 배열

PHP $GLOBALS란 무엇인가?

$GLOBALS는 PHP에서 제공하는 슈퍼 글로벌(Superglobal) 배열 중 하나로, 스크립트 전역 범위에서 정의된 모든 변수에 대한 참조를 담고 있는 연관 배열(associative array)입니다.

이 배열에서 변수 이름은 키(key)가 되고, 변수의 값은 해당 키의 값(value)으로 저장됩니다. 따라서 함수 내부에서도 $GLOBALS['변수명'] 형태로 전역 변수에 직접 접근할 수 있습니다.

$GLOBALS 기본 사용 예제

다음 예제는 $GLOBALS 배열에 전역 변수들의 이름과 값이 어떻게 저장되어 있는지 보여줍니다.

예제 코드

<?php
$var1="Hello";
$var2=100;
$var3=array(1,2,3);
echo $GLOBALS["var1"] . "\n";
echo $GLOBALS["var2"] . "\n";
echo implode($GLOBALS["var3"]) . "\n";
?>

실행 결과

Hello
100
123

위 코드에서 $var1, $var2, $var3는 모두 전역 범위에서 선언되었기 때문에 $GLOBALS 배열을 통해 그대로 조회할 수 있습니다. 특히 배열 변수는 implode() 함수를 사용해 문자열로 변환하여 출력했습니다.

전역 변수와 지역 변수의 구분

$GLOBALS의 진가는 함수 내부에서 드러납니다. 아래 예제에서는 같은 이름의 $var1이 전역 범위와 함수 내부(지역 범위)에 각각 선언되어 있습니다. 함수 안에서 $GLOBALS 배열을 통해 전역 변수에 접근하면, 지역 변수와는 다른 값이 출력됩니다.

예제 코드

<?php
function myfunction(){
    $var1="Hello PHP";
    echo "전역 범위의 var1 : " . $GLOBALS['var1']. "\n";
    echo "지역 변수 var1 : ". $var1;
}
$var1="Hello World";
myfunction();
?>

실행 결과

전역 범위의 var1 : Hello World
지역 변수 var1 : Hello PHP

함수 내부에서 단순히 $var1을 참조하면 지역 변수인 "Hello PHP"가 출력되지만, $GLOBALS['var1']을 사용하면 전역 변수인 "Hello World"에 접근할 수 있습니다. 이처럼 $GLOBALS는 global 키워드 없이도 함수 내부에서 전역 변수를 읽거나 수정할 수 있게 해주는 강력한 도구입니다.

정리

  • $GLOBALS는 모든 전역 변수를 담는 연관 배열이다.
  • 키는 변수 이름, 값은 변수의 내용이다.
  • 함수 내부에서 global 선언 없이 전역 변수에 접근·수정할 수 있다.