Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 10 di 67
  • livello intermedio
Indice lezioni

Le variabili in PHP

Impariamo le regole sintattiche necessarie per inizializzare, valorizzare, mantenere in memoria, generare gli output e visualizzare i messaggi di errore nella gestione delle variabili di PHP.
Impariamo le regole sintattiche necessarie per inizializzare, valorizzare, mantenere in memoria, generare gli output e visualizzare i messaggi di errore nella gestione delle variabili di PHP.
Link copiato negli appunti

Le variabili sono uno degli strumenti fondamentali di ogni linguaggio di programmazione. Una variabile è una porzione di memoria in cui viene memorizzato un dato che può variare durante l'esecuzione del programma.

Come abbiamo visto nella lezione precedente, PHP non è un linguaggio fortemente tipizzato. A differenza di linguaggi come il C o il Java in cui bisogna dichiarare il tipo di dato che conterrà una determinata variabile, in PHP possiamo assegnare alla stessa variabile diversi tipi di dato durante l'esecuzione dello script.

Un'altra differenza sostanziale è che la variabile non deve essere necessariamente dichiarata prima del suo utilizzo. Questo consente, quindi, di creare variabili al volo nel momento in cui ne abbiamo bisogno.

Le variabili in PHP sono delimitate dal carattere $, seguito da un carattere alfabetico o da un underscore _. I caratteri successivi al secondo possono contenere qualsiasi sequenza di cifre, caratteri alfabetici ed underscore. Analizziamo alcuni esempi di nomi per le variabili:

$variabile = 5;    //valida
$_variabile = 5;   //valida
$variabile_1 = 5;  //valida
$variabile1 = 5;   //valida
$1variabile = 5;   //non valida, inizia con un carattere numerico
$_1variabile = 5;  //valida
$111;              //non valida, contiene solo caratteri numerici

Una variabile, come anticipato, può memorizzare un valore. Questo valore può essere impostato al momento della dichiarazione oppure può essere il risultato di un'operazione matematica o di una chiamata ad una funzione:

$a = 5;
$b = $a * 5;   //$b = 25
$c = $b * $a;  //$c = 25 * 5 = 125
$c = rand(0,5); //$c = valore casuale compreso tra 0 e 5

Bisogna prestare attenzione nell'utilizzare variabili a cui non sia stato assegnato precedentemente un valore. In questo caso verrà visualizzato un notice, ovvero il tipo di errore meno grave presente di PHP:

echo $ciao;

stamperà a video un notice simile al seguente:

PHP Notice: Undefined variable: ciao in php shell code on line 1

Il consiglio, quindi, è quello di assegnare sempre un valore iniziale ad una variabile, anche se questo valore può essere null o false.

Output delle variabili

Una volta che abbiamo definito una variabile, molto spesso abbiamo bisogno di stamparne il suo contenuto a video. Il costrutto più importante per stampare il contenuto di una variabile è stato introdotto nel corso degli articoli precedenti, esso si basa sull'istruzione echo attraverso la quale possiamo visualizzare in output uno o più parametri.

$nome = "Simone";
echo "Il mio nome è $nome";    //Il mio nome è Simone
echo "Il mio nome è " . $nome; //Il mio nome è Simone

Possiamo anche passare il risultato di un'espressione direttamente al costrutto senza salvarlo prima in un'ulteriore variabile. I due esempi seguenti, infatti, sono identici nel risultato finale:

$a = 2;
$b = 2;
$c = $a * $b;
echo $c;      //stamperà 4
echo $a * $b; //stamperà 4

Scope delle variabili

Lo scope di una variabile è l'area in cui essa è visibile durante l'esecuzione dello script, esso può essere di tre tipi:

  1. locale;
  2. globale;
  3. statico.

Scope locale

Una variabile dichiarata all'interno di una funzione ha uno scope locale e non ha visibilità al di fuori di essa.

function test_scope() {
    $x = "scope locale";
    echo $x;  //stamperà scope locale
}
echo $x; //genererà un errore perché $x non è accessibile al di fuori della funzione

Scope globale

Una variabile dichiarata al di fuori di una funzione ha uno scope globale e non può essere accessibile all'interno di una funzione

$x = "scope globale";
function test_scope() {
    echo $x;   //genererà un errore perché $x non è accessibile all'interno della funzione
}
echo $x;   //stamperà scope globale

La keyword global

Se vogliamo accedere al valore di una variabile globale all'interno di una funzione possiamo utilizzare la keyword global. Attraverso di essa, infatti, possiamo bypassare la limitazione dello scope globale. Riprendendo l'esempio appena visto, richiamando la variabile attraverso global il nostro codice non genererà un errore.

$x = "scope globale";
function test_scope() {
    global $x;
    echo $x;   //stamperà scope globale
}
echo $x;   //stamperà scope globale

Scope statico

Quando una funzione termina la sua esecuzione, il contenuto occupato dalle variabile dichiarate al suo interno viene liberato in memoria. Nel caso in cui non volessimo cancellare il suo contenuto possiamo dichiararla come static. Vediamo due esempi, uno classico e uno che definisce la variabile come statica.

function test_static() {
    $x = 0;
    $x = $x+1;
    echo $x;
}
test_static(); //stamperà 1
test_static(); //stamperà 1
test_static(); //stamperà 1

Definendo invece come statica la variabile:

function test_static() {
    static $x = 0;
    $x = $x+1;
    echo $x;
}
test_static(); //stamperà 1
test_static(); //stamperà 2
test_static(); //stamperà 3

Variabili superglobali

PHP fornisce alcune variabili superglobali che sono sempre disponibili in tutti gli scope. Approfondiremo in dettaglio queste variabili in una lezione apposita, per ora ci limiteremo a darne una breve descrizione.

Variabile Descrizione
$GLOBALS Contiene le variabili definite come globali attraverso la keyword global.
$_SERVER Contiene gli header e le informazioni relative al server e allo script.
$_GET Contiene i parametri passati tramite URL (es http://sito.com/?param1=ciao&param2=test).
$_POST Contiene i parametri passati come POST allo script (es.: dopo il submit di una form).
$_FILES Contiene le informazioni relative ai file uploadati dallo script corrente attraverso il metodo POST.
$_COOKIE Contiene i cookie.
$_SESSION Contiene le informazioni relative alla sessione corrente.
$_REQUEST Contiene tutti i parametri contenuti anche in $_GET, $_POST e $_COOKIE.
$_ENV Contiene tutti i parametri passati all'ambiente.

Variabili dinamiche

In circostanze molto particolari potrebbe accadere di non conoscere il nome di una determinata variabile e che tale informazione sia salvata all'interno di un'altra variabile. In questo caso è possibile utilizzare il contenuto di una variabile come variabile stessa:

$italiano = 'Ciao';
$lingua = 'italiano';
echo $$lingua . ', Simone';

stamperà:

Ciao, Simone

Ti consigliamo anche