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선언 없이 전역 변수에 접근·수정할 수 있다.