array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'tr', ), 'this' => array ( 0 => 'reserved.variables.globals.php', 1 => '$GLOBALS', ), 'up' => array ( 0 => 'reserved.variables.php', 1 => 'Öntanımlı Değişkenler', ), 'prev' => array ( 0 => 'language.variables.superglobals.php', 1 => 'Süper küreseller', ), 'next' => array ( 0 => 'reserved.variables.server.php', 1 => '$_SERVER', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'tr', 'path' => 'language/predefined/variables/globals.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
$GLOBALS — Küresel alanda bulunan bütün değişkenleri içerir
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.
Ö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
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
?>
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;
}
?>