ADNKRONOS

Tecnologia

Amazon Books

WallPapers

Driver Image Banner 728 x 90
Variabili (definizione e limiti nei nomi, ambito delle variabili, elasticità di PHP nel trattarle)

Nel PHP tutti i nomi di variabili iniziano con un simbolo di dollaro ($). il $ può essere seguito da un trattino, da un carattere dell'alfabeto o da un trattino di sottolineatura, ed opzionalmente da una sequenza di caratteri alfanumerici e di trattini di sottolineatura. La lunghezza del nome della variabile non ha limite.

I nomi delle variabili in PHP sono case sensitive, ciò vuole dire che $pippo e $Pippo sono due variabili diverse.

Vediamo qualche esempio di nome di variabile :

$i;

$_temp;

$contatore;

$_123_abc;

Nel PHP, a differenza di altri linguaggi non occorre dichiarare esplicitamente le variabili, l'assegnazione del tipo di variabile avviene automaticamente la prima volta che gli viene attribuito un valore.

Normalmente si assegna una variabile nel seguente modo $variabile = “ciao” ; ma talvolta è utile poterle assegnare dinamicamente, per esempio potremmo avere necessità di avere una variabile il cui nome è il valore della variabile $variabile, si può fare in questo modo

$$variabile = “saluti”;

il PHP interpreta $$variabile prima indirizzando la variabile più interna, quindi $variabile diventa “ciao”. L'espressione da interpretare è $”ciao”, che in definitiva è solo $ciao. In altri termini abbiamo appena creato una variabile di nome $ciao e gli abbiamo assegnato il valore “saluti.

In PHP è possibile, con la tecnica ora vista, annidare variabili a livelli infiniti (memoria permettendo) ma, è abbastanza comprensibile che dopo il secondo livello di annidamento i problemi di comprensione del codice si fanno seri.

 

Variabili inesistenti e nulle

Abbiamo detto che in PHP la dichiarazione di una variabile avviene in modo implicito nel momento in cui ad essa viene assegnato un valore; ma come possiamo verificare se accediamo ad una variabile inesistente ( alla quale cioè non è stato ancora assegnato un valore) ? Vediamo l'esempio che segue:

<?php

// $var non esiste

 

if (!isset($var)) {echo “$var non esiste <br>”;} # qui scriviamo che $var non esiste

 

if (empty($var)) { echo “$var è vuota <br>” ; } # qui scriviamo che la variabile è vuota

 

$somma = $var + 7 ; // la variabile vale 7

echo ( “$somma = “.$somma); # mostro a video il valore di di $somma

?>

In questo esempio abbiamo utilizzato due funzioni del PHP:

  • la funzione isset() che restituisce TRUE se la variabile esiste e FALSE se la variabile non esiste;
  • la funzione empty() che restituisce TRUE se la variabile è vuota e FALSE se la variabile contiene un valore (compatibilmente con il tipo di variabile).

 

E' da sottolineare che una variabile non definita (isset() = FALSE) è sempre vuota (empty() = TRUE).

Nell'esempio che segue vedremo una situazione leggermente diversa. La variabile $var sarà definita ma il suo valore sarà nullo per il tipo per cui avviene l'assegnazione implicita:

 

<?php

 

// $var esiste ed il suo valore è zero, considerato nullo per il tipo numerico assegnato implicitamente

$var = 0;

 

if (isset($var)) {echo “$var esiste <br>”;} # qui scriviamo che $var esiste

 

if (empty($var)) { echo “$var è vuota <br>” ; } # qui scriviamo che la variabile è vuota

 

$somma = $var + 7 ; // la variabile vale 7

echo ( “$somma = “.$somma); # mostro a video il valore di $somma

?>

Visibilità delle variabili

Per visibilità di una variabile si intende la definizione del contesto in cui il contenuto di questa è disponibile.

In base al diverso ambito di visibilità possiamo distinguere le variabili in globali e locali.

Sono globali le variabili dichiarate nella parte più esterna dello script, sono locali quelle dichiarate all'interno di funzioni e classi.

Le variabili globali sono visibili in tutta la parte esterna dello script ma non all'interno di funzioni o classi: ad esempio

 

// variabile globale

$funghi = 7;

// funzione quanti_funghi()

function quanti_funghi() {

return $funghi

}

echo “ci sono “. quanti_funghi().” funghi nel cesto”;

 

restituisce la frase ' ci sono funghi nel cesto' in quanto la funzione quanti_funghi() restituisce un valore nullo poiché la variabile funghi non è visibile al suo interno.

 

E' possibile rendere visibili le variabili all'interno di funzioni e classi dichiarandole con la parola chiave global 

l'esempio ora

// variabile globale

global $funghi = 7;

// funzione quanti_funghi()

function quanti_funghi() {

return $funghi

}

echo “ci sono “. quanti_funghi().” funghi nel cesto”

 

restituisce correttamente la frase : ci sono 7 funghi nel cesto.

 

Le variabili globali sono accessibili anche tramite l'array associativo $GLOBALS quindi una volta definita come global la variabile $funghi, ci si può riferire ad essa con la sintassi $GLOBALS[“funghi”].