|
Quando si lavora con applicazioni Web, si ha la necessità di operare con molte variabili diverse, provenienti dalla form
o mantenute come stato corrente. A volte la cosa più semplice è compilare degli elenchi di nomi di variabili. Cioè si
hanno delle variabili che contengono il nome di un'altra variabile. Il PHP non ha puntatori, ma sopperisce a questa
mancanza per le esigenze di cui abbiamo appena detto tramite l'uso di variabili che contengono altre variabili. Per
esempio:
$a = "test";
$b = "a";
print "$b=";
print $$b;
=> a=test
Come si vede dall'esempio, utilizzando la sintassi $$b è stata stampata il valore della variabile il cui nome è contenuto
nella variabile $b. Si tratta pertanto di un modo blando di avere dei (limitati) puntatori.
ATTENZIONE: Sebbene questa tecnica serve, è opportuno non abusarne perchè porta facilmente a scrivere programmi poco
chiari, con dipendenze del tutto inaspettate e difficili da intuire. Se da un lato è vero che con l'aumentare della
complessità delle applicazioni l'utilizzo di queste tecniche diventa indispensabile, dall'altro è anche vero che in questi
casi si superano i limiti per cui è progettato il PHP. Quando si usano puntatori, occorre anche avere tipi diversi e
diventa opportuno sviluppare applicazioni con tecniche ingegneristiche, progettazione ad oggetti ed uso di linguaggi
meno semplici che supportino la programmazione ad oggetti, come Java.
La sintassi delle variabili di varibili porta ad avere delle ambiguità, per esempio quando la variabile è contenuta in un
array o in una stringa. In questi casi si ricorre alle seguenti forme sintattiche:
$a = "test";
$b[]="a";
$c=$b[0];
print "$b[0]=";
print ${$b[0]};
=> a=test
print "$c=${$c}";
=> a=test
ATTENZIONE: è possibile usare una variabile che contiene il nome di una singola variabile , non di un elemento di array.
|