PHP $GLOBALS
PHP păstrează un tablou numit $GLOBALS, care conține referințe către fiecare variabilă globală din scriptul tău.
Este una dintre variabilele superglobale, variabilele integrate la care poți ajunge de oriunde, indiferent de domeniul de vizibilitate.
Variabile globale
O variabilă globală este o variabilă la care are acces orice domeniu de vizibilitate.
Ca să creezi una nu ai nevoie de niciun pas special: tot ce creezi în domeniul cel mai exterior al unui script este global în mod automat și poate fi folosit din orice domeniu.
Funcțiile sunt excepția. Înainte ca o funcție să poată folosi o variabilă globală, trebuie să facă unul dintre aceste două lucruri: să declare variabila cu cuvântul cheie global sau să ajungă la ea prin $GLOBALS.
Referire la o variabilă globală cu $GLOBALS
Aici o funcție citește variabila globală $x prin $GLOBALS:
Ieșire: script PHP
<?php
$x = 75;
function myfunction() {
echo $GLOBALS['x'];
}
myfunction();
?>
Fără $GLOBALS
Dacă omiți $GLOBALS, funcția nu poate vedea variabila globală, așa că PHP nu îți dă nimic sau îți dă o eroare:
Ieșire: script PHP
<?php
$x = 75;
function myfunction() {
echo $x;
}
myfunction();
?>
Folosirea cuvântului cheie global
Cuvântul cheie global este cealaltă opțiune. Declari variabila cu el în interiorul funcției și de acolo încolo poți folosi numele simplu:
Ieșire: script PHP
<?php
$x = 75;
function myfunction() {
global $x;
echo $x;
}
myfunction();
?>
Crearea variabilelor globale
Indiferent dacă scrii $GLOBALS sau nu, o variabilă creată la nivelul cel mai exterior al unui script devine globală.
Variabilele din domeniul exterior sunt globale
Această variabilă este creată la nivelul de sus și apoi citită de două ori, prin $GLOBALS și direct după nume. Ambele dau aceeași valoare:
Ieșire: script PHP
<?php
$x = 100;
echo $GLOBALS['x'];
echo $x;
?>
Crearea unei variabile globale în interiorul unei funcții
În mod normal, o variabilă creată într-o funcție există doar în acea funcție. Scrierea în $GLOBALS schimbă acest lucru, deoarece noua intrare devine o variabilă globală pe care restul scriptului o poate folosi, așa cum se întâmplă aici cu $z:
Ieșire: script PHP
<?php
$x = 10;
$y = 20;
function result() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
result();
echo $z;
?>