$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;
}
?>