PHP/Programmazione/Variabili

Wikibooks, manuali e libri di testo liberi.
Jump to navigation Jump to search
CopertinaPHP/Copertina

Possiamo pensare ad una variabile come una scatola nella quale immagazzinare le informazioni e da cui possiamo ottenerle quando è necessario.

Lavorare con le variabili[modifica]

In PHP le variabili sono identificate dal simbolo $, che precede il nome della variabile stessa. È necessario tuttavia che il primo carattere dopo il $ non sia un numero o un carattere speciale, ma sia una lettera o un carattere underscore (_).

Molti linguaggi di programmazione richiedono che le variabili usate nel corso del programma siano dichiarate. Il linguaggio PHP è un linguaggio chiamato a tipizzazione debole, che significa invece che non richiede alcuna dichiarazione di variabile: per il motore PHP, infatti, una variabile è tale dalla prima riga nella quale se ne fa uso.

L'istruzione fondamentale che è possibile eseguire con una variabile è l'assegnazione, che imposta (assegna) il valore contenuto dalla variabile. La sintassi è

$nome_var = valore

dove valore è un'espressione valida per PHP (per espressione si intende una sequenza di dati, operatori e/o variabili che restituisca un valore). Sono ad esempio espressioni

3 //restituisce 3
3 + $var //restituisce il valore di $var sommato di 3.

Per fare riferimento ad una variabile e al suo valore sarà necessario semplicemente riferirsi al nome; si noti che PHP è case-sensitive, quindi $var e $Var sono due variabili differenti. Questo script, ad esempio, stampa il valore di una variabile:

<?php
 $variabile = "valore della variabile";
 echo "$variabile";
?>

Da notare che l'istruzione echo non stampa $variabile ma il valore della variabile $variabile; sarebbe equivalente scrivere

echo $variabile;

Un'istruzione, invece, come

echo '$variabile';

stamperebbe $variabile (si notino gli apici e non le virgolette doppie).

Variabili per valore e per riferimento[modifica]

Le variabili PHP sono solitamente passate per valore: quando una variabile viene assegnata ad un'altra in realtà viene assegnato ad una variabile una copia del valore dell'altra, ma le due variabili identificano comunque due celle di memoria differenti. Ad esempio:

$var1 = 3;
$var2 = $var1 //ora $var2 contiene il valore 3
$var2 = 4 //in questo caso non cambia il valore di $var1 ma solo quello di $var2

Talvolta, soprattutto per quanto riguarda l'uso di funzioni, è comodo aver due variabili che puntino alla stessa cella di memoria. Per fare ciò si assegnano le variabili per riferimento usando la sintassi:

$var1 = &$var2

Ad esempio

$var1 = 3;
$var2 = &$var1 //ora $var2 e $var1 puntano alla stessa cella di memoria
$var2 = 4 //ora $var1 e $var2 contengono entrambe il valore 4

Costanti[modifica]

Può essere comodo durante la programmazione definire valori costanti riutilizzabili nel codice. La differenza sostanziale tra costanti e varibili sta nel fatto che le prime, a differenza delle seconde, non possono essere modificate. Per definire una costante si usa la sintassi:

define("nome_costante", valore);

e per richiamarle si usa semplicemente il loro nome:

echo nome_costante;

Esistono alcune costanti predefinite, che sono valide cioè in tutti gli script:

  • __FILE__: restituisce il percorso completo e il nome del file (ad esempio /var/www/html/index.php su sistemi Linux)
  • __LINE__: restituisce il numero di riga in cui si trova la costante
  • __FUNCTION__ e __CLASS__: restituiscono rispettivamente il nome della funzione e della classe in cui la costante è richiamata.

Tipi di dati[modifica]

PHP è a tipizzazione debole anche perché converte automaticamente il tipo di dati contenuto nella variabile a seconda del contesto (questo è importante quando si usano gli operatori).
Nonostante ciò, il concetto di tipo di dato esiste in PHP: ogni variabile è di un determinato tipo a seconda del valore che contiene in quel momento. Principalmente i tipi di dato sono:

Nome Descrizione Esempio
Numero intero (int) o a virgola mobile (float) un numero razionale o intero $a = 3; $b = -12.5;
Stringa (string) sequenza alfanumerica (testo); durante l'assegnazione deve essere delimitata da due virgolette (") o apici ('). $a = "testo"; $b = '"I promessi sposi" è un romanzo di A. Manzoni';
Booleano (boolean) può assumere solo i valori true (vero) o false (falso) $a = true; $b = (3 == 5);
Array tipo di dato complesso, verrà trattato più avanti
Null indica l'assenza di un valore; serve soprattutto ad annullare una variabile $a = null;

Di fronte a diversi tipi di dato, il motore PHP può trovarsi in diverse situazioni e si comporta in maniere differenti:

  • se si aspetta un valore numerico intero e viene fornito un numero a virgola mobile PHP tronca la parte decimale, restituendo solo la parte intera
  • se si aspetta un valore numerico e viene fornita una stringa, PHP elimina spazi e lettere di troppo utilizzando soltanto i numeri contenuti in tale stringa
  • se si aspetta un valore numerico e viene fornito un valore booleano viene restituito 1 se il valore è TRUE, 0 se il valore è FALSE
  • se si aspetta un numero e viene fornito un array restituisce un numero pari al numero di elementi contenuti dall'array
  • se si aspetta una stringa e viene fornito un numero questo viene convertito in una stringa contentente esattamente il numero stesso
  • se si aspetta un valore stringa e viene fornito un valore booleano viene restituito 1 se il valore è TRUE, una stringa vuota se è FALSE
  • se si aspetta una stringa e viene fornito un array restituisce una stringa contenente il valore array
  • se si aspetta un valore booleano e viene fornito un numero PHP restituisce FALSE se il numero è uguale a 0, TRUE se è il numero è diverso da 0 (di solito 1)
  • se si aspetta un valore booleano e viene fornita una stringa PHP restituisce FALSE se la stringa è vuota o contiene il valore 0; restituisce TRUE negli altri casi
  • se si aspetta un valore booleano e viene fornita un array PHP restituisce FALSE se l'array è vuoto , TRUE negli altri casi
  • il valore null viene trattato come un valore booleano FALSE

Esistono tuttavia numerose funzioni di conversione per trasformare un tipo di dato in un altro, che consistono nell'anteporre all'espressione in questione il nome del tipo di dato che si vuole ottenere tra parentesi. Ad esempio:

(int)(3.45 + 7.3)

restituisce 10, in quanto viene convertito un numero float in un intero secondo le regole di conversione. Allo stesso modo

(boolean)("questa è un'espressione stringa")

restituisce TRUE

Calcolo multibase[modifica]

Oltre al sistema decimale, PHP può lavorare con i sistemi di numerazione in base otto e sedici. Per inizializzare una variabile in base otto, il numero deve iniziare con uno 0 (es 01247); i numeri in base sedici devono invece iniziare con 0x (es 0xf56b).

Stringhe[modifica]

Meritano particolare attenzione le stringhe, soprattutto nell'analisi dei caratteri di commutazioni.
Una stringa in PHP deve essere delimitata da apici o da apici doppi; bisogna tuttavia chiudere una stringa con la stessa modalità con cui si è aperta:

"Questa non è una stringa valida'
'Questa lo è'

Può essere necessario in alcuni casi usare carattere particolari; ad esempio può essere necessario inserire un apice in una stringa delimitata da apici singoli. In questo caso si usano i caratteri di commutazione (o sequenze di escape). I principali sono:

\' Singolo apice (necessario solo se la stringa è racchiusa da apici singoli)
\" Doppio apice (necessario solo se la stringa è racchiusa da apici doppi)
\\ Backslash
\n New line (ritorno a capo)
\r Ritorno del carrello
\t Tabulazione orizzontale
\v Tabulazione verticale (disponibile nelle versioni di PHP superiori alla 5.2.5)
\f form feed (disponibile nelle versioni di PHP superiori alla 5.2.5)
\$ Segno del dollaro
\x00 - \xFF Carattere esadecimale

Nota: nel caso di stringhe racchiuse da apici singoli l'unica sequenza di escape ammessa è la prima (\')