변수 유효 범위
변수의 유효 범위(Scope)는 프로그램 안에서 생성된 특정 변수가 참조되고 살아있는 수명(Lifecycle)과 영역을 제한하는 개념입니다.
PHP는 코드가 복잡해짐에 따라 서로 다른 함수 간의 변수 이름이 겹치거나 값이 임의로 변경되어 발생하는 충돌 문제를 방지하기 위해 변수 사용 영역을 엄격히 분리(격리)하고 있습니다.
1. 변수 유효 범위 구조도
아래 다이어그램은 글로벌 스페이스(Global Space)와 함수 내부 스페이스(Local Space) 간의 물리적 격리 상태, 그리고 스태틱(Static) 변수의 존속 방식을 도식화한 것입니다.
2. 핵심 변수 스코프 타입
PHP의 변수 유효 범위는 크게 세 가지로 분류할 수 있습니다.
1) 전역 변수 (Global Scope)
- 함수 외부 영역에서 선언된 변수입니다. 스크립트 실행이 완전히 끝날 때까지 메모리에 존속합니다.
- PHP의 독특한 규칙에 따라, 함수 내부에서는 글로벌 변수를 직접 불러올 수 없습니다. 함수 내에서 접근하려면
global키워드로 변수를 연결 선언하거나$GLOBALS슈퍼 전역 배열을 사용해야 합니다.
2) 지역 변수 (Local Scope)
- 함수 내부 영역에서 선언되는 변수입니다.
- 함수가 호출되어 실행을 시작할 때 메모리에 비로소 생성되며, 함수의 실행이 완료되어 중괄호(
})를 빠져나가는 순간 메모리에서 즉각 소멸합니다. 외부나 다른 함수에서는 접근이 절대 불가능합니다.
3) 정적 변수 (Static Scope)
- 함수 내부에 선언되지만 앞에
static키워드가 붙습니다. - 일반 지역 변수와 달리, 함수의 실행이 끝나도 메모리에서 사라지지 않고 마지막에 대입된 상태 값을 계속 보존합니다. 다시 함수가 호출되면 초기화 과정을 스킵하고 이전 상태에서 이어서 동작합니다.
4) 슈퍼 전역 변수 (Superglobals)
$GLOBALS,$_GET,$_POST,$_SERVER등은 PHP가 자체 제공하는 내장 전역 변수입니다.- 사용자가 직접
global을 선언하는 번거로움 없이, 스크립트의 그 어떠한 위치(클래스, 함수 내부 등)에서도 자유롭게 즉시 접근이 가능합니다.
학습내용
- 글로벌변수: 함수 외부에서 사용하며 스크립트 전체 수명을 같이 하는 전역 변수의 선언과 특징을 알아봅니다.
- 로컬변수: 함수 내부에서만 동작하며 실행 종료 시 즉각 소멸하는 지역 변수의 격리 원리를 학습합니다.
- static 키워드: 함수가 종료되어도 상태 값을 잃지 않고 유지하는 정적 변수의 메모리 매커니즘을 배웁니다.
- 글로벌 배열: 글로벌 공간에 존재하는 모든 변수를 참조할 수 있게 제공되는
$GLOBALS배열의 다중 바인딩을 실습합니다. - 슈퍼변수:
global키워드를 매번 적지 않고도 모든 스코프에서 접근 가능한 내장 전역 변수(Superglobals)의 개념을 공부합니다. - $_SERVER: 웹 서버 환경 변수, 요청 헤더, 요청 경로 등을 참조할 수 있는 슈퍼 변수
$_SERVER를 다룹니다.
이전 학습
« 전처리기 개요
다음 학습
에러 처리 개요 »
서브목차