Le variabili locali e globali
La visibilità delle variabili (detta anche scope) definisce l'ambito entro cui una variabile può essere usata, che può essere local, global o static.
Normalmente una variabile è global, cioè è visibile in tutto il file .php in cui viene creata tranne che all'interno delle funzioni definite dal programmatore. Le variabili all'interno delle funzioni definite dal programmatore sono local, cioè sono visibili solo all'interno di esse e dentro alle funzioni non sono visibili le variabili global.
In questo esempio la chiamata alla funzione cheversofa() non produrrà l'effetto voluto perchè le variabili che hanno valore "gatto" e "miagolio" non sono visibili dentro la funzione.
<?php
function cheversofa() {
echo "<p>l'animale ".$animale." fa il verso: ".$verso."</p>";
}
$animale = "gatto";
$verso = "miagolio";
cheversofa();
?>
In questo esempio forziamo lo scope delle due variabili mediante la parola chiave global.
<?php
function cheversofa() {
global $animale;
global $verso;
echo "<p>l'animale ".$animale." fa il verso: ".$verso."</p>";
}
$animale = "gatto";
$verso = "miagolio";
cheversofa();
?>
Dentro la funzione indichiamo che le variabili $animale e $verso devono essere globali e quindi visibili anche al di fuori di essa.
Tutte le variabili globali vengono raccolte in un array chiamato $GLOBALS[$i] dove $i è il nome che abbiamo scelto per la variabile.
Quando una funzione definita dal programmatore viene terminata, tutte le variabili locali, non dichiarate global e quindi non salvate nell'array $GLOBALS sono cancellate. Per evitare questo possiamo usare la parola chiave static che non modifica lo scope della variabile ma impedisce che questa sia cancellata alla fine della funzione.
Nell'esempio dopo ogni chiamata della funzione contatore() la variabile $volte viene distrutta quindi il suo valore sarà sempre 0.
<?php
function contatore()
{
$volte = 0;
echo "<p>A questa chiamata la variabile vale ".$volte++."</p>";
}
contatore();
contatore();
contatore();
contatore();
?>
Ora aggiungiamo la parola chiave static
<?php
function contatore()
{
static $volte = 0;
echo "<p>A questa chiamata la variabile vale ".$volte++."</p>";
}
contatore();
contatore();
contatore();
contatore();
?>
Le variabili superglobali
Le variabili superglobali sono automaticamente disponibili in qualunque punto dello script. Sono organizzate in array associativi.
<?php
echo "<p>ecco una serie di informazioni relative ai cookies:</p>";
print_r($_COOKIE);
?>
| Nome Array | Descrizione |
|---|---|
| $GLOBALS | contiene tutte le variabili globali accessibili dallo script locale |
| $_SERVER | contiene le variabili relative all'ambiente del server web |
| $_GET | contiene le variabili passate tramite parametri URL (metodo GET del protocollo HTTP) |
| $_POST | contiene le variabili passate tramite il metodo POST del protocollo HTTP |
| $_COOKIE | contiene informazioni sui cookie |
| $_FILES | contiene informazioni sui files di cui viene fatto l'upload tramite il metodo POST |
| $_ENV | contiene informazioni sull'ambiente dello script |
| $_REQUEST | l'insieme di $_GET, $_POST e $_COOKIE |
| $_SESSION | contiene le variabili registrate nella sessione |