🌍 Scope delle Variabili

Lo scope indica dove una variabile è visibile e utilizzabile nel programma.

In PHP esistono principalmente tre tipi di scope:


🔹 1️⃣ Variabili Locali

Una variabile dichiarata dentro una funzione è visibile solo all’interno di quella funzione.

📌 Esempio

<?php
function prova() {
    $numero = 10;
    echo $numero;
}

prova();
?>

✔ Funziona correttamente.

Ma se proviamo a usare $numero fuori dalla funzione:

<?php
function prova() {
    $numero = 10;
}

prova();
echo $numero; // Errore
?>

❌ Errore: la variabile non esiste fuori dalla funzione.

👉 Questo perché è locale.


🔹 2️⃣ Variabili Globali

Una variabile dichiarata fuori dalle funzioni è globale.

📌 Esempio

<?php
$nome = "Paolo";

function saluta() {
    echo $nome; // Errore
}

saluta();
?>

❌ Anche qui errore.

La funzione non vede automaticamente le variabili globali.


🔓 Come usare una variabile globale dentro una funzione?

Si usa la parola chiave global.

<?php
$nome = "Paolo";

function saluta() {
    global $nome;
    echo "Ciao " . $nome;
}

saluta();
?>

✔ Output:

Ciao Paolo

🔹 Alternativa: $GLOBALS

PHP mette tutte le variabili globali dentro un array speciale chiamato $GLOBALS.

<?php
$numero = 5;

function raddoppia() {
    echo $GLOBALS['numero'] * 2;
}

raddoppia();
?>

🔹 3️⃣ Variabili Statiche

Normalmente una variabile locale viene distrutta quando la funzione termina.

Ma se la dichiariamo static, il suo valore viene conservato.

📌 Esempio

<?php
function contatore() {
    static $numero = 0;
    $numero++;
    echo $numero . "<br>";
}

contatore();
contatore();
contatore();
?>

✔ Output:

1
2
3

👉 La variabile mantiene il valore tra una chiamata e l’altra.


🧠 Riassunto

Tipo Dove esiste Quando si usa
Locale Solo dentro la funzione Uso interno
Globale Fuori dalle funzioni Dati condivisi
Static Dentro funzione ma persistente Contatori

🎯 Concetto chiave

Le variabili dichiarate dentro una funzione non interferiscono con quelle fuori.

Questo rende il codice più sicuro e organizzato.


Il capitolo Funzioni sta diventando completo 😊

Nel prossimo possiamo vedere:

🔹 Funzioni anonime 🚀