$GLOBALS

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

$GLOBALS

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

$GLOBALS — Refererar till alla variabler som är tillgängliga i globalt omfång

Beskrivning

En associativ array som innehåller referenser till alla variabler som för närvarande är definierade i skriptets globala omfång. Variabelnamnen är nycklarna i arrayen.

Exempel

Exempel #1 $GLOBALS-exempel
<?php

function test()
{
    $foo = "lokal variabel";

    echo '$foo i globalt omfång: ' . $GLOBALS["foo"] . "\n";
    echo '$foo i nuvarande omfång: ' . $foo . "\n";
}

$foo = "Exempelinnehåll";
test();

?>

Ovanstående exempel kommer att ge följande resultat:

$foo i globalt omfång: Exempelinnehåll
$foo i nuvarande omfång: lokal variabel

Varning: Från och med PHP 8.1.0 stöds inte längre skrivåtkomst till hela `$GLOBALS`-arrayen:

Exempel #2 Skrivning av hela $GLOBALS kommer att resultera i fel
<?php

// Genererar ett kompileringstidfel:
$GLOBALS = [];
$GLOBALS += [];
$GLOBALS =& $x;
$x =& $GLOBALS;
unset($GLOBALS);
array_pop($GLOBALS);
// ...och alla andra skriv-/läs-skriv-operationer på $GLOBALS

?>

Noteringar

Notera: Detta är en "superglobal", eller automatisk global, variabel. Detta innebär helt enkelt att den är tillgänglig i alla omfång genom ett skript. Det finns inget behov av att använda `global $variable;` för att komma åt den inom funktioner eller metoder.

Notera: Variabeltillgänglighet Till skillnad från alla andra superglobals har `$GLOBALS` i princip alltid varit tillgänglig i PHP.

Notera: Från och med PHP 8.1.0 är `$GLOBALS` nu en skrivskyddad kopia av den globala symboltabellen. Det vill säga, globala variabler kan inte ändras via dess kopia. Tidigare undantogs `$GLOBALS`-arrayen från PHP-arrayers vanliga beteende att behandlas efter värde, och globala variabler kunde ändras via dess kopia.

<?php

// Före PHP 8.1.0
$a = 1;

$globals = $GLOBALS; // Till synes en kopia efter värde
$globals['a'] = 2;
var_dump($a); // int(2)

// Från och med PHP 8.1.0
// detta ändrar inte längre $a. Det tidigare beteendet bröt mot värdesemantiken.
$globals = $GLOBALS;
$globals['a'] = 1;

// För att återställa det tidigare beteendet, iterera över dess kopia och tilldela varje egenskap tillbaka till $GLOBALS.
foreach ($globals som $key => $value) {
    $GLOBALS[$key] = $value;
}

?>

Sidslut

Orginalhemsidan på Engelska : https://www.php.net/manual/en/reserved.variables.globals.php
PHP
Språkreferens
Språkreferens#Fördefinierade_Variabler


Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp som har sponsrat Linux.se med webserver.