PHP 슈퍼글로벌이란?
PHP에서는 개발자가 직접 정의하는 변수 외에도, PHP 엔진이 전역 네임스페이스에 미리 채워 넣는 슈퍼글로벌(Superglobals)이라 불리는 사전 정의 변수들이 있습니다.
슈퍼글로벌의 가장 큰 특징은 어떤 함수나 메서드 내부에서도 별도의 선언 없이 항상 사용할 수 있다는 점입니다. 일반적인 전역 변수처럼 global 키워드를 붙일 필요가 없기 때문에 코드 작성이 훨씬 간편해집니다.
주요 슈퍼글로벌 변수 목록
| $GLOBALS | 전역 범위(global scope)에서 사용 가능한 모든 변수에 대한 참조 |
| $_SERVER | 서버 및 실행 환경 관련 정보(헤더, 경로, 스크립트 위치 등) |
| $_GET | URL 쿼리스트링을 통해 전달되는 HTTP GET 변수 |
| $_POST | HTTP POST 방식으로 전달되는 폼 데이터 변수 |
| $_FILES | HTTP 파일 업로드 관련 정보를 담는 변수 |
| $_REQUEST | GET, POST, COOKIE 입력을 통합적으로 담는 HTTP 요청 변수 |
| $_SESSION | 사용자 세션 정보를 저장하는 세션 변수 |
| $_ENV | 서버 운영체제 및 실행 환경의 환경 변수 |
| $_COOKIE | 클라이언트로부터 전달받은 HTTP 쿠키 변수 |
| $php_errormsg | 직전에 발생한 마지막 오류 메시지 |
| $HTTP_RAW_POST_DATA | 가공되지 않은 원본(raw) POST 데이터 |
| $http_response_header | HTTP 응답 헤더 정보 |
| $argc | 커맨드 라인에서 스크립트에 전달된 인수의 개수 |
| $argv | 커맨드 라인에서 스크립트에 전달된 인수들을 담은 배열 |
참고: 지원 중단(Deprecated)된 변수들
위 목록 중 일부 변수는 최신 PHP 버전에서 더 이상 권장되지 않거나 제거되었으니 주의가 필요합니다.
- $php_errormsg: PHP 7.2에서 지원 중단(deprecated)되었으며, PHP 8.0부터 완전히 제거되었습니다. 대신
error_get_last()함수를 사용하세요. - $HTTP_RAW_POST_DATA: PHP 5.6에서 지원 중단되었고, PHP 7.0부터 제거되었습니다. 원본 POST 데이터가 필요하다면
php://input스트림 래퍼를 활용하는 것이 좋습니다.
반면 $_SERVER, $_GET, $_POST, $_SESSION, $_COOKIE, $_FILES, $_ENV, $_REQUEST, $GLOBALS는 현재까지도 안정적으로 지원되는 핵심 슈퍼글로벌 변수이며, 웹 애플리케이션 개발에서 요청 처리와 상태 관리에 필수적으로 사용됩니다.