Corso di PHP

Le variabili di nome variabile e le interazioni con l'esterno

 

Come si può evincere dal titolo, la lezione di quest’oggi tratterà due argomenti:

> Le variabili di nome variabile.
> Come PHP interagisce con l’ambiente esterno.

Le variabili di nome variabile.
Le variabili di nome variabile sono una caratteristica rara in un linguaggio di programmazione, ma potenzialmente assai utili. Vediamo cosa sono e come si utilizzano.

Come ormai noto le variabili PHP si indicano con una stringa alfanumerica preceduta dal simbolo di dollaro ($); ad ogni variabile definita in questo modo è possibile assegnare una stringa; partendo da questi due postulati, PHP costruisce le sue variabili di nome variabile. Una variabile di tale genere è infatti una variabile il cui nome è contenuto all’interno di un’altra variabile.

Facciamo un esempio che permetta di chiarire le idee; supponiamo di definire una variabile ed assegnarvi un valore con la nota istruzione:

$var = “x”;

Definiamo adesso una variabile di nome variabile tramite il comando:

$$var = “y”;


Il nostro script conterrà in questo modo due variabili: $var, contenente il valore x, e $x, variabile di nome variabile, definita con il secondo statement, contenente il valore y. Ad essa ci si può tuttavia riferire anche attraverso il nome simbolico $$var.

Sebbene le variabili di nome variabile aumentino la flessibilità del linguaggio e la scrivibilità  dei programmi, il loro uso può produrre effetti dannosi per la leggibilità; ne sconsigliamo quindi l’uso in tutti i casi in cui si prevede un frequente aggiornamento del codice o quando questo fa parte di un più ampio progetto sviluppato in equipe.

Altro effetto collaterale derivante dall’uso di questa sintassi ha luogo quando si tratta con vettori. Infatti una variabile del tipo:

$$var[1]

provoca una indeterminatezza in quanto il parser non può sapere se ci si riferisce ad una variabile avente come nome il primo elemento del vettore $var[ ], oppure si sta indirizzando il primo elemento del vettore $$var[ ].
Per risolvere questa ambiguità si fa uso di una sintassi particolare adoperante le parentesi graffe ({ e }).
Nel nostro esempio si utilizza il comando

${$var[1]}

nel primo caso, mentre nel secondo

{$$var[1]}

risulta la sintassi corretta.


Le interazione con l’esterno
Negli esempi visti finora si sono utilizzate variabili i cui valori venivano assegnati all’interno degli script stessi. Un linguaggio di programmazione che non permettesse l’assegnazione di valori provenienti dall’ambiente esterno risulterebbe poco utile. Non è questo il caso di PHP come dimostrano i milioni di siti del mondo che ormai ne fanno uso.

Per PHP l’ambiente esterno è una pagina HTML e quindi le sue variabili provengono dalle form attraverso i classici metodi POST e GET.

Esempio:

<form action="mioscript.php" method="post">
Nome: <input type="text" name="nome"><br>
Cognome: <input type="text" name="cognome"><br>
Indirizzo: <input type="text" name="indirizzo"><br>
<input type="submit">
</form>


Se la direttiva track_vars del file di configurazione e settata ad ON, allora queste variabili saranno disponibili all’interno di due array associativi: $HTTP_POST_VARS e $HTTP_GET_VARS, a secondo della loro provenienza; mentre se è settata la direttiva register_globals, allora saranno disponibili sotto forma di variabili globali con nome identico a quello delle variabili HTML, naturalmente preceduto dal simbolo di dollaro.

PHP è inoltre in grado di riconoscere gli array provenienti dalle form HTML.

Attenzione:PHP 3 permetteva solamente l’utilizzo di array monodimenesionali, mentre l’uso di array a più dimensioni all’interno di form è stato introdotto da PHP 4. Non se ne dimentichino gli utenti della scorsa versione del nostro linguaggio per non incorre in errori di difficile individuazione.

 

Torna all'indice Generale del corso di Corso di PHP di Software Planet