php

PHP의 변수는 함수 스코프 , 전역 변수 추천 사용법

1.함수스코프인줄 몰라서 개발중 코드 동작을 의심한 경험이 있기때문에 정리함..
2.그리고 전역변수의 추천 사용법은 알아두면 좋을거같음

1. PHP는 블록 스코프(Block Scope)를 사용하지 않는다

블록 내부에서 선언한 변수도 같은 함수 안이라면 어디서든 사용할 수 있다.

function test() {
    if (true) {
        $name = "Tom";
    }
    echo $name;
}
test(); // 출력: Tom

위 예제에서 $nameif 블록 내부에서 선언되었지만, PHP는 블록 스코프가 아닌 함수 스코프(Function Scope) 를 사용하므로 함수 전체에서 접근할 수 있다.


2. 함수 내부에서는 전역 변수에 바로 접근할 수 없다

함수 밖에서 선언한 변수는 전역 변수(Global Variable)이며, 함수 내부에서는 기본적으로 접근할 수 없다.

$name = "Tom";

function test() {
    echo $name;
}

test(); // Undefined variable: name

3. 전역 변수 사용 방법

방법 1. global 키워드 사용

가장 일반적으로 사용하는 방법이다.

$name = "Tom";

function test() {
    global $name;
    echo $name;
}

test(); // 출력: Tom

global 키워드를 사용하면 함수 내부에서 전역 변수에 접근할 수 있다.


방법 2. 함수의 매개변수로 전달 (권장)

실무에서는 전역 변수에 의존하기보다 필요한 값을 함수 인자로 전달하는 것이 유지보수와 테스트 측면에서 유리하다.

$name = "Tom";

function test($name) {
    echo $name;
}

test($name); // 출력: Tom

정리

  • PHP는 블록 스코프를 사용하지 않는다.

  • if, for, foreach, while 내부에서 선언한 변수는 같은 함수 내에서 사용 가능하다.

  • 함수 외부의 전역 변수는 함수 내부에서 바로 접근할 수 없다.

  • 전역 변수 사용 시 global 키워드를 사용한다.

  • 실무에서는 global보다 함수의 매개변수로 값을 전달하는 방식이 권장된다.