Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Variabili e tipi in Php

Analisi sui tipi e l'utilizzo delle variabili in Php
Analisi sui tipi e l'utilizzo delle variabili in Php
Link copiato negli appunti

Introduzione

Qualsiasi linguaggio di programmazione (PHP compreso ovviamente) non può lavorare senza le variabili che rappresentano,
probabilmente, la prima cosa in cui ci si imbatte quando si intraprende lo studio della sintassi.
Volendo costruire una definizione di variabile ci accorgiamo in realtà che è possibile darne almeno due: una più
tecnica, per così dire, ed una più semplice (e di immediata comprensione).

Piccolo, ma obbligatorio, passo indietro: in PHP (come in altri linguaggi) occorre operare una prima distinzione tra
letterali e identificatori; per letterale si intende un valore di un dato, quindi, ad esempio, 45 o "Hello world" sono
dei letterali; un identificatore, invece, non è altro che un nome che assegniamo a variabili, classi, funzioni.
Tornando alla duplice definizione, il primo modo (quello più "tecnico") di definire le variabili, potrebbe essere il
seguente: una variabile non è altro che una "etichetta" associata ad una particolare locazione di memoria, un nome
quindi, che corrisponde ad un particolare "indirizzo" della memoria di lavoro (RAM).

Volendo invece definire una variabile in modo più semplice ed immediato (ed anche più inerente alle scelte operate dagli
"inventori" di PHP), possiamo dire che non è altro che un identificatore caratterizzato da un particolare carattere
iniziale (il segno del dollaro $) e che deve sottostare a particolari regole per ciò che attiene al suo nome.

Regole sui nomi e assegnazione

I nomi delle variabili devono cominciare con il segno del dollaro ($), seguito da una lettera o da un
underscore ( _ ), seguiti a sua volta da altre lettere o numeri o underscore. Possono essere usate sia lettere maiuscole che minuscole e i nomi delle variabili, a differenza di quelli delle funzioni,
sono case-sensitive (anche su Sistemi Operativi che non lo sono), ossia sensibili alla differenza tra maiuscole e
minuscole, per cui $var e $Var sono variabili differenti.

A differenza di altri linguaggi, come C o Java, PHP non prevede la fase della dichiarazione della variabile, essa
viene creata quando viene valorizzata. In pratica quindi, la dichiarazione della variabile avviene implicitamente
quando ad essa viene attribuito un valore.

A questo punto è legittimo chiedersi, ma come si fa ad attribuire un valore ad una variabile ?
Tale procedimento, noto come assegnazione, avviene tramite l'uso dell'operatore uguale (=), posto tra il nome
della variabile (a sinistra del segno =) e il valore da attribuirle (posto a destra del segno =), ecco un esempio:

$nome_variabile = 10;

In questo modo si attribuisce il valore 10 alla variabile $nome_variabile (che, come già detto, viene anche
implicitamente dichiarata).

Per cambiare il valore della variabile $nome_variabile, è sufficiente procedere ad una nuova assegnazione dopo la prima:

$nome_variabile = 10;
$nome_variabile = 5;

Tale procedimento è noto come riassegnazione, e fa sì che la prima assegnazione perda del tutto il suo effetto.

I tipi di valori

Parlando di assegnazione di un valore ad una variabile, abbiamo implicitamente introdotto il discorso dei Tipi di valore. PHP conosce infatti otto distinti tipi di valore (da cui discendono otto diversi tipi di variabili):

1) Integer, ossia i numeri interi, il cui intervallo varia a seconda della piattaforma (ma in genere è compreso tra
-2.147.483.648 e +2.147.483.647). Possono essere rappresentati in formato decimale (una sequenza di numeri senza
zero iniziale), in formato ottale (una sequenza di numeri da 0 a 7 che inizia per zero) e in formato esadecimale (una
sequenza che inizia per 0x seguita da cifre o lettere comprese tra la A e la F).
Per verificare che un valore sia un integer, si può usare la funzione is_int().

2) I numeri in virgola mobile, ossia valori numerici con cifre decimali il cui intervallo, analogamente ai
decimali, varia da piattaforma a piattaforma, ma generalmente è compreso tra 1,7E-308 e 1,7E+308 con 15 cifre di
precisione.
Per verificare che un valore sia un numero in virgola mobile, si può usare la funzione is_float().

3) I valori booleani, ossia vero (TRUE) o falso (FALSE). In PHP sono falsi i seguenti valori:
una stringa vuota, l'integer 0, il numero in virgola mobile 0.0, il valore NULL, un array con zero elementi, un oggetto
privo di valori e funzioni e, ovviamente, la parola chiave FALSE.
Per verificare che un valore sia un booleano, si può usare la funzione is_bool().

4) Le stringhe, ovvero le sequenze di caratteri di lunghezza arbitraria delimitate da apici doppi o singoli.
Per verificare che un valore sia una stringa, si può usare la funzione is_string().

5) Gli array, che contengono al loro interno un gruppo di valori aventi tutti lo stesso nome ed identificabili solo
dall'indice (numerico o stringa).
Per verificare che un valore sia un array, si può usare la funzione is_array().

6) Gli oggetti, tipo non molto semplice da spiegare senza fare lunghe premesse (che esulano del tutto dagli scopi di questo articolo), ma che si possono correttamente definire come istanze di una classe.
Per verificare che un valore sia un oggetto, si può usare la funzione is_object().

7) Le risorse, un tipo di valore introdotto a partire da PHP4, che contengono un riferimento ad una risorsa esterna, ad esempio una connessione o una query su un Database.
Per verificare che un valore sia una risorsa , si può usare la funzione is_resource().

8) Il tipo NULL (parola chiave not-sensitive), che indica una variabile senza valore, e corrisponde all'undef di Perl, o al None di Python.
Per verificare che un valore sia NULL, si può usare la funzione is_null().

Assegnazione e conversione di tipi

Abbiamo visto quali sono i tipi di valori (e di variabili) in PHP. A questo proposito va subito detto che PHP è
estremamente duttile e niente affatto rigoroso (rispetto ad altri linguaggi) riguardo all'assegnazione dei tipi alle
variabili o alla conversione delle stesse da un tipo all'altro; il tutto è infatti gestito quasi interamente in
automatico.

Come detto all'inizio, non è prevista la fase dichiarazione delle variabili; esse sono automaticamente dichiarate nel
momento in cui vengono valorizzate, ed è anche in questo momento che avviene l'assegnazione del tipo. PHP è infatti
abbastanza intelligente da capire di che tipo di variabile si tratti a seconda del valore che le viene assegnato.
Facciamo qualche esempio:

<?php

$var_1 = "ciao come stai ?"; // è una stringa
$var_2 = 56; // è un integer
$var_3 = 46.37 // è un numero a virgola mobile
$var_4 = mysql_query("SELECT * FROM tabella"); // è una risorsa

?>

Altrettanto semplice (ed automatica) è la conversione da un tipo all'altro. Consideriamo questi esempi (presi
direttamente dal manuale di PHP):

<?php

$foo = 1 + "bob3"; // $foo è un intero (1)
$foo = 1 + "10 Small Pigs"; // $foo è un intero (11)
$foo = "67" // $foo è una stringa (notare gli apici)

?>

Type casting

Naturalmente è anche possibile forzare il tipo di una variabile, per mezzo di quel procedimento noto come Type Casting, che consiste nell'anteporre il tipo di variabile (posto tra parentesi) al valore che viene assegnato.
Possibili valori validi per il Type Casting sono:

  • (int), (integer) - la variabile diventa un intero
  • (bool), (boolean) - la variabile diventa un booleano
  • (float), (double), (real) - la variabile diventa un numero in virgola mobile
  • (string) - la variabile diventa una stringa
  • (array) - la variabile diventa un array
  • (object) - la variabile diventa un oggetto

Ecco degli esempi di Type Casting:

<?php

/* converte l'intero 67 in una stringa, si poteva ottenere lo stesso
risultato usando gli apici doppi o singoli */
$var = (string) 67;

/* converte da stringa a intero, il risultato dell'operazione è 1 */
$var = (int) "1 parola";

/* converte in intero, la variabile passata via GET, sistema utile
quando il valore della variabile andrà poi utilizzato, ad esempio,
in una query */
$var = (int) $_GET['get_var'];

?>

Per cambiare il tipo di una variabile si può usare la funzione settype(); per ottenere il tipo di una variabile
invece, c'è la funzione gettype().

Ambito delle variabili

Argomento importantissimo, quando si parla di variabili, è l'ambito delle stesse (scope in inglese), ossia il campo
d'operatività delle variabili, determinato dalla loro posizione all'interno dello script.
L'ambito può essere globale o locale e la regola generale è che una variabile, definita all'esterno di una funzione, ha
un ambito globale (al contrario del Perl, ad esempio); ossia qualsiasi parte del programma può accedervi.
Al contrario, se una variabile viene definita all'interno di una funzione, il suo ambito è locale e non accessibile quindi
dall'esterno della funzione stessa.

Come ovvio, questo fa sì che possano benissimo coesistere, all'interno di uno stesso script, due o più variabili aventi
lo stesso nome, ma con diverso ambito.

Una variabile globale è comunque accessibile dall'interno di una funzione, a tale scopo è sufficiente dichiararla come
globale (tramite l'uso della parola chiave global) all'interno della funzione:

<?php

$var = "variabile globale";
function do_something() {
global $var;
// adesso la funzione può accedere a $var
}

?>

A titolo d'informazione (ma la cosa dovrebbe essere nota), ricordo che, a partire da PHP 4.1.0, gli array contenenti le
cosiddette variabili predefinite, come $_GET, $_POST, $_COOKIE, sono anche superglobali (per usare la terminologia dello staff di PHP) ossia sono accessibili dall'interno di una funzione senza la necessità di dichiararli come globali.

Funzioni di variabili

A conclusione di questo articolo, vorrei accennare ad alcune importanti funzioni per la gestione delle variabili (molte le abbiamo già incontrate nella terza pagina):

  • isset() verifica se una variabile è definita (attenzione, definita, non valorizzata !)
  • unset() distrugge la variabile specificata (come avverte il manuale, in PHP4 questa non è più una vera funzione, pertanto non restituisce nulla)
  • empty() varifica se una variabile è valorizzata
  • get_defined_vars() restituisce un array contenente tutte le variabili definite
  • print_r() e var_dump() stampano a video informazioni relative al contenuto di una variabile (con delle piccole differenze fra le due funzioni)

Un riferimento completo a tutte le funzioni di variabili, si trova seguendo questo questo link.

Ti consigliamo anche