컴퓨터언어/PHP

[PHP] 변수의 유효범위

bbanpro 2020. 12. 19. 21:00
728x90
반응형

PHP 선수지식)

스크립트 : <?php 와 ?> 사이에 위치한 한 블럭

 

슈퍼글로벌 변수

스크립트 전역(함수 안과 밖 모두)에서 사용할 수 있는 변수

 

선언된 상수

스크립트 전역에서 사용할 수 있음

 

전역변수 - 다른 언어에서의 전역변수와 다름(다른 언어에서는 함수 안에서도 해당 변수를 사용가능)

스크립트 내에서 정의된 변수로서 스크립트 내에서 사용할 수 있으나 함수 안에서 사용할 수 없음

 

함수 안에서 정의된 변수

함수 내에서만 사용할 수 있음

 

함수 안에서 전역으로 정의된 변수

함수 밖에서 사용할 수 없지만, 매번 사용할 때마다 값이 저장되어 있기 때문에 다음에 그대로 사용할 수 있음

 

함수 안에서 사용된 변수는 함수가 끝나면 변수가 사라진다(삭제된다).

 


 

슈퍼글로벌변수 (함수 안팎에서 모두 사용 가능)

$GLOBALS : 모든 전역변수의 배열

$_SERVER : 서버 환경변수의 배열

$_ENV : 환경변수의 배열

$_COOKIE : 쿠키변수의 배열

$_GET : GET 메서드로 넘어온 변수의 배열

$_POST : POST 메서드로 넘어온 변수의 배열

$_FILES : 파일 업로드와 관련된 변수의 배열

$_REQUEST : 사용자가 입력한 변수의 배열

$_SESSION : 세션 변수의 배열

 


$test = 100;

 

function

<?php

    $var1 = "이게 전역변수";
    
    function func1() {
        $var1 = "이게 지역변수";
        /*
            이 윗줄처럼 $var1을 따로 정의하지 않으면, print $var1이 오류남.
            따로 정의하지 않고도 그대로 쓰려면, global $var1 쓰면 됨.
            단, 함수 내에서 global 키워드를 사용하여 함수 밖의 변수를 사용가능.
        */
        print $var1 // "이게 지역변수";
    }

?>
<?php

    $wantToEnterFunc = "함수 안에 들어가고 싶어요";
    
    function func1() {
        $GLOBALS['wantToEnterFunc'] = "들어왔어요";
        print $GLOBALS['wantToEnterFunc']."<br/>";
    }

?>

 

global 키워드 : 전역변수를 함수 내에서 사용할 수 있게 함

static 키워드 : 함수 안에 변수를 그대로 두고 전역변수처럼 변수를 사용하고자 할 때 사용. 로컬변수의 메모리 해제를 보완한 것.

global static
함수 밖에 원래 있던 변수를 함수 안에서도 사용하기 위함 (밖->안) 함수 안에서 새로 정의한 변수를 함수 밖에서도 사용하기 위함 (안->밖)
  다른 함수에서는 불러올 수 없음.
728x90
반응형