본문 바로가기
PHP

[PHP] global, local, static 변수 범위(scope) 차이

by teamnova 2025. 6. 1.
728x90

안녕하세요,

오늘은 php 변수의 범위 global, local, static의 차이에 대해 알아보겠습니다. 

 

1. Local 변수(지역변수)

  • 함수 내부에서 선언된 변수
  • 함수 밖에서는 사용할 수 없음
  • 함수 실행 시 스택 메모리에 올라가고, 함수 종료 시 해제됨
  • 매번 새롭게 생성되므로, 이전 상태는 유지되지 않음
function sayHello() {
    $message = "Hello";
    echo $message;
}
sayHello();

 

실행결과

Hello


2. Global 변수

  • 함수 외부에서 선언된 변수
  • 함수 안에서는 직접 접근할 수 없음
  • global 키워드를 사용해야 함수 안에서도 사용할 수 있음
  • 실제로는 GLOBALS라는 연관 배열에 저장됨
$name = "홍길동";

function greet() {
    global $name; // 전역 변수 사용 선언
    echo "안녕하세요, $name";
}
function showName() {
    echo $GLOBALS['name'];
}

greet();
echo "<br>  GLOBALS 배열:";
showName();

 

실행결과

안녕하세요, 홍길동
GLOBALS 배열:홍길동


3. Static 변수

  • 함수 안에서 선언되지만, 함수가 끝나도 값이 유지됨
  • 초기화는 단 한 번만 일어남
  • 함수가 호출될 때 기존 값을 재사용합니다.
  • 함수 내부에 선언되지만, PHP는 이를 함수 실행 컨텍스트 외부의 정적 저장소에 따로 보관함
  • 단, 스크립트가 종료되면 사라짐 
function counter() {
    static $count = 0;
    $count++;
    echo "호출 횟수: $count<br>";
}
counter(); // 호출 횟수: 1
counter(); // 호출 횟수: 2
counter(); // 호출 횟수: 3

 

실행결과

호출 횟수: 1
호출 횟수: 2
호출 횟수: 3

* 일반 변수였다면 0부터 다시 시작했겠지만, static이기 때문에 상태가 계속 유지됨.