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