Le variabili in PHP

31 luglio 2015

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.

VariabileDescrizione
$GLOBALSContiene le variabili definite come globali attraverso la keyword global.
$_SERVERContiene gli header e le informazioni relative al server e allo script.
$_GETContiene i parametri passati tramite URL (es http://sito.com/?param1=ciao&param2=test).
$_POSTContiene i parametri passati come POST allo script (es.: dopo il submit di una form).
$_FILESContiene le informazioni relative ai file uploadati dallo script corrente attraverso il metodo POST.
$_COOKIEContiene i cookie.
$_SESSIONContiene le informazioni relative alla sessione corrente.
$_REQUESTContiene tutti i parametri contenuti anche in $_GET, $_POST e $_COOKIE.
$_ENVContiene 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

Tutte le lezioni

1 ... 9 10 11 ... 49

Se vuoi aggiornamenti su Le variabili in PHP inserisci la tua e-mail nel box qui sotto:
Tags:
 
X
Se vuoi aggiornamenti su Le variabili in PHP

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy