$GLOBALS — 전역 범위에서 사용 가능한 모든 변수를 참조합니다.

(PHP 4, PHP 5, PHP 7, PHP 8)

$GLOBALS — 전역 범위에서 사용 가능한 모든 변수를 참조합니다.


설명

현재 스크립트의 전역 범위에 정의된 모든 변수에 대한 참조를 포함하는 연관 배열입니다. 변수 이름은 배열의 키입니다.


Examples

예제 #1 $GLOBALS 예제

                  
<?php
function test() {
    $foo = "local variable";

    echo '$foo in global scope: ' . $GLOBALS["foo"] . "\n";
    echo '$foo in current scope: ' . $foo . "\n";
}

$foo = "Example content";
test();
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

$foo in global scope: Example content
$foo in current scope: local variable
                

경고 PHP 8.1.0부터 전체 $GLOBALS 배열에 대한 쓰기 액세스가 더 이상 지원되지 않습니다.

예제 #2 전체 $GLOBALS를 쓰면 오류가 발생합니다.

                    
  <?php
   // Generates compile-time error:
   $GLOBALS = [];
   $GLOBALS += [];
   $GLOBALS =& $x;
   $x =& $GLOBALS;
   unset($GLOBALS);
   array_pop($GLOBALS);
   // ...and any other write/read-write operation on $GLOBALS
   ?>
                    
                  

노트

메모: 이것은 'supergobal' 또는 자동 글로벌 변수입니다. 이것은 단순히 스크립트 전체에서 모든 범위에서 사용할 수 있음을 의미합니다. global $variable;을 수행할 필요가 없습니다. 함수 또는 메서드 내에서 액세스합니다.

메모: 가변 가용성 다른 모든 superglobals과 달리 $GLOBALS는 기본적으로 PHP에서 항상 사용할 수 있습니다.

메모: PHP 8.1.0부터 $GLOBALS는 이제 전역 기호 테이블의 읽기 전용 복사본입니다. 즉, 전역 변수는 복사본을 통해 수정할 수 없습니다. 이전에는 $GLOBALS 배열이 PHP 배열의 일반적인 값별 동작에서 제외되었으며 전역 변수는 복사본을 통해 수정할 수 있습니다.

                    
  <?php
  // Before PHP 8.1.0
  $a = 1;
  $globals = $GLOBALS; // Ostensibly by-value copy
  $globals['a'] = 2;
  var_dump($a); // int(2)

  // As of PHP 8.1.0
  // this no longer modifies $a. The previous behavior violated by-value semantics.
  $globals = $GLOBALS;
  $globals['a'] = 1;

  // To restore the previous behavior, iterate its copy and assign each property back to $GLOBALS.
  foreach ($globals as $key => $value) {
      $GLOBALS[$key] = $value;
  }
  ?>