$GLOBALS

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

$GLOBALSKüresel alanda bulunan bütün değişkenleri içerir

Açıklama

Geçerli betiğin küresel alanında tanımlı bütün değişkenleri içeren bütünleşik bir dizidir. Değişken isimleri dizinin anahtarlarıdır.

Örnekler

Örnek 1 - $GLOBALS örneği

<?php
function test() {
$foo = "yerel değişken";

echo
'$foo küresel alanda: ' . $GLOBALS["foo"] . "\n";
echo
'$foo yerel alanda: ' . $foo . "\n";
}

$foo = "Örnek içerik";
test();
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

$foo küresel alanda: Örnek içerik $foo yerel alanda: yerel değişken
Uyarı

PHP 8.1.0 itibariyle, $GLOBALS dizisinin tamamına yazma erişimi artık desteklenmemektedir:

Örnek 2 - $GLOBALS dizisini yeniden yazmak hataya yol açar.

<?php
// Derleme sırasında hata verir:
$GLOBALS = [];
$GLOBALS += [];
$GLOBALS =& $x;
$x =& $GLOBALS;
unset(
$GLOBALS);
array_pop($GLOBALS);
// ... ve $GLOBALS üzerinde her türlü yaz/oku-yaz işlemi
?>

Notlar

Bilginize:

Bu bir süper küreseldir. Yani bir betiğin her yerinde geçerlidir. Değişkene işlevler ve yöntemlerin içinden erişmek için global $değişken; deyimine gerek yoktur.

Bilginize: Değişken kullanılabilirliği

Diğer süper küresellerden farklı olarak, $GLOBALS PHP'de her zaman var olmuştur.

Bilginize:

PHP 8.1.0 itibariyle, $GLOBALS artık küresel simge tablosunun salt-okunur bir kopyasıdır. Yani, küresel değişkenlerde kopyası üzerinden değişiklik yapılamaz. Evvelce, $GLOBALS dizisine, PHP dizilerinin değerlerle tanımlanması davranışı uygulanmaz ve küresel değişkenlerde kopyaları üzerinden değişiklik yapılabilirdi.

<?php
// PHP 8.1.0 öncesinde
$a = 1;
$globals = $GLOBALS; // Görünüşte değere göre kopya
$globals['a'] = 2;
var_dump($a); // int(2)

// PHP 8.1.0 ve sonrasında
// $a artık $GLOBALS kopyasından değiştirilemez.
// Önceki davranış dizilerde değerle tanımlanma davranışı ile çelişiyordu.
$globals = $GLOBALS;
$globals['a'] = 1;

// Önceki davranışa dönmek istenirse, kopya üzerinde yineleme ile
// her özellik $GLOBALS dizisine yeniden atanmalıdır.
foreach ($globals as $key => $value) {
$GLOBALS[$key] = $value;
}
?>
To Top