728x90
반응형

$GLOBALS 사용하기

함수 안에서 전역 변수를 사용하는 또 하나의 방법은 배열 $GLOBALS를 사용하는 방법입니다.

$GLOBALS는 연관 배열이며 사용법이 약간 특별 합니다. 예를 들어, 사용하고 싶은 전역 변수가 $data라면 함수 안에서 $GLOBALS['data']와 같이 변수명을 키로 사용해 $data의 내용을 참조, 할당할 수있습니다. 결과는 global 선언을 사용한 것과 같습니다. 더구나 이 $GLOBALS는 어디서도 사용할 수 있어 슈퍼 글로벌(Super globals)이라고 부릅니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php  
// 전역 변수
$data = 5;
function scope_test(){
    // 전역 변수를 참조
    $GLOBALS['data'+= 1;
    print $GLOBALS['data'];
    print "<BR>";
}
print $data;
print "<BR>";
scope_test();
print $data;
print "<BR>";
?>
cs



슈퍼 글로벌 사용법

PHP에서 사용할 수 있는 슈퍼 글로벌 변수는 아래 표와 같습니다. 모두 연관 배열로 사용합니다. $_SERVER나 $_ENV는 시스템에 따라 다른 값이 할당됩니다. $_GET과 $_POST는 송신 폼으로부터 값을 받습니다. $_FILES는 업로드된 파일과 이름이 할당됩니다. $_SESSION은 데이터를 가지고 다니기 위해 사용되는 변수입니다. 상세한 내용은 PHP 매뉴얼을 참조합니다.


미리 정의된 변수

 변수 

 의미 

 $GLOBALS 

 전역 변수

 $_SEVER 

 서버 변수

 $_ENV 

 환경 변수

 $_COOKIE 

 HTTP 쿠키

 $_GET 

 HTTP GET 변수

 $_POST 

 HTTP POST 변수

 $_FILES 

 HTTP 파일 업로드 변수

 $_REQUEST 

 HTTP Request  변수

 $_SESSION 

 Session 변수



static  사용법

함수 안에 변수를 그대로 두고 전역 변수처럼 변수를 사용하려면 static을 사용합니다. 예를 들어, 아래 코드를 실행하면 함수 안의 $data가 초기화($data에 0을 할당)되기 때문에 [0]을 5번 표시합니다.

1
2
3
4
5
6
7
8
9
10
11
12
<?php  
counter();
counter();
counter();
counter();
counter();
function counter(){
    $data = 0;
    print $data ++;
    print "<BR>";
};
?>
cs


이를 카운팅 동작처럼 1씩 증가하게 변경하기 위해서 함수 안의 $data를 static으로 선언합니다. 이렇게 하면 [counter();]를 호출할 때마다 1씩 더하여 표시됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
<?php  
counter();
counter();
counter();
counter();
counter();
function counter(){
    static $data = 0;
    print $data ++;
    print "<BR>";
};
?>
cs


반응형

'메모 > PHP' 카테고리의 다른 글

배열 연산자  (0) 2017.03.13
연습문제  (0) 2017.02.20
[PHP메모] 객체 지향  (0) 2017.01.15
[PHP메모] date 함수(날짜 함수)에 대해  (0) 2016.11.20
[PHP메모] foreach 문  (0) 2016.11.05