Vademecum del buon programmatore


Questi sono piccoli consigli da prendere in considerazione quando scrivete i vostri programmi PHP; vi aiutano nella stesura e nella pulizia del codice, nel reperire informazioni e nel chiedere consiglio.

Variabili

E' buona norma essere espliciti nella scrittura delle variabili in modo da evitare "spiacevoli" duplicazioni e in modo da poterle riconoscere in qualsiasi punto del vostro codice. Le variabili sono uno degli elementi fondamentali della programmazione (in qualsiasi linguaggio) in quanto vi permettono di immagazzinare e portare con voi in tutto il percorso del programma dati che vi serviranno.

Le variabili si distinguono in due categorie principali:

- variabili semplici
- variabili array

Le variabili semplici sono dei contenitori singoli di dati, ovvero al loro interno possono essere memorizzati solo valori in una unica locazione; la scrittura di questo tipo di variabile avviene anteponendo semplicemente il simbolo $ ad un nome: $lamiavariabile

Le variabili array invece sono dei contenitori "multipli" di dati, ovvero al loro interno possono essere memorizzati dati e altri Array in diverse locazioni (indici); anche per queste variabili basta anteporre il simbolo $ ad un nome con la differenza che la parte finale del nome racchiude una o più gruppi di parentesi quadre [].
Le variabili array si suddividono a sua volta in 2 tipi, array semplici ed array associativi.

Gli array semplici hanno come indice sempre e solo un valore numerico: $ilmioarray_semplice[3]
Gli array associativi hanno come indice una stringa alfanumerica: $ilmioarray_associativo['nome']

La differenza tra i due tipi di array sta nel fatto che il secondo è più facile da gestire avendo associato un nome all'indice. Tutti gli array associativi necessitano che il nome sia sempre racchiuso tra apici (singoli o doppi non fa differenza). PHP tuttavia accetta indici senza apici, anche se genera degli avvisi che se non vengono bloccati tramite la configurazione di PHP appaiono a video ogni volta che un array associativo viene scritto senza apici. E' buona abitudine utilizzare sempre gli apici!

Tutti i tipi di variabili (sia semplici che array) accettano come nome delle stringhe contenenti: lettere da a a z, numeri da 0 a 9, il trattino (-) e il carattere di sottolineatura (underscore _ ). Non possono contenere nessun altro carattere.
Ricordatevi che tutti i nomi delle variabili sono case sensitive, ovvero fanno differenza tra maiscole e minuscole: scrivere $laMiaVariabile non è uguale a scrivere $lamiavariabile. Per PHP sono due variabili diverse.

Operazioni con variabili

Tutte le variabili di PHP possono contenere sia valori stringa (caratteri alfanumerici) sia valori numerici. In base al loro contenuto esistono degli operatori aritmetici che ne permettono la manipolazione.

Se il valore delle variabili è un valore numerico (intero o a virgola mobile) si possono eseguire tutte le più comuni operazioni aritmetiche:

- somma: $valore1 + $valore2
- sottrazione: $valore1 - $valore2
- moltiplicazione: $valore1 * $valore2
- divisione: $valore1 / $valore2
- modulo: $valore1 % $valore2, ovvero divide i due valori e restituisce il resto, esempio: 10%3 viene restituito 1

Se invece il contenuto della variabile è alfanumerico l'unica operazione possibile è la somma definita "concatenazione" utilizzando il punto (.):

$variabile1 . $variabile2


N.B. se il contenuto delle due variabili è un contenuto numerico, utilizzando la concatenazione vengono considerati come due stringhe, esempio:
$variabile1 = 1;
$variabile2 = 2;
print $variabile1 . $variabile2; // stampa a video: 12

Stesura del codice

Quando scriviamo un programma, è buona norma cercare di rendere bello pulito e leggibile i codice in modo da carpire a colpo d'occhio la funzionalità del codice ed eventuali errori, in modo che se qualcun'altro deve metterci le mani o noi ci torniamo sopra dopo 12 mesi riusciamo a leggere il codice senza difficoltà.
Per migliorare la stesura del nostro codice dobbiamo tenere a mente alcuni piccoli consigli:

- usare sempre in modo ordinato l'identatura delle righe
if ( $a == $b ) {
    if ( $c == $d ) {
        print "ciao";
    }
}

- abbondare sempre con gli spazi in modo da far risaltare le singole istruzioni
strtoupper(substr(preg_match("![a-z]+]!i", $valore),0,2));


sicuramente diventa più leggibile a colpo d'occhi se scritto:
strtoupper( substr( preg_match("![a-z]+]!i", $valore), 0, 2));


- evitate di inserire variabili nelle stringhe e di usare la concatenazione
$totale = "Ciao $nome, benvenuto nel sito $nomesito";


a colpo d'occhio si vede meglio se esistono variabili (e per far lavorare meglio PHP) se usiamo la sintassi
$totale = "Ciao " . $nome . ", benvenuto nel sito " . $nomesito;


Inoltre PHP ha difficoltà ad interpretare gli array all'interno di stringhe se questi sono array multidimensionali:
$totale = "Ciao $valore['utente']['nome'], benvenuto nel sito $valore['sito']['nomesito']";
genera un Parse Error e blocca l'esecuzione del programma.

- risparmiate dove potete righe di codice e risorse di sistema
$nome = $_POST['nome'];
$email = $_POST['email'];
print "Il tuo nome è: " . $nome . " e la tua email è: " . $email;


Non cambia niente se scrivete:
print "Il tuo nome è: " . $_POST['nome'] . " e la tua email è: " . $_POST['email'];

avete semplicemente utilizzato un array che viene generato da PHP... risparmiate righe di codice inutile e se questi valori vi servono anche in altre parti di codice, ad esempio le funzioni, non dovete renderle globali (perchè già lo sono) e avete sott'occhio sempre "da dove provengono".

Come reperire informazioni sui comandi

Il sito di PHP, http://it.php.net , è un manuale on-line sempre aggiornato con le ultime modifiche e ricco di commenti dei vari utenti con esempi pratici di come utilizzare al meglio la risorsa e/o il comando.
E' inoltre suddiviso per categorie di argomenti, quindi di facile consultazione. Permette altresì di richiamare un comando direttamente dalla URL:

- se per esempio dobbiamo usare il comando mysql_connect ma non ci ricordiamo come vengono inseriti i parametri, basta scrivere http://it.php.net/mysql_connect per accedere direttamente nella pagina di quel comando

Una volta avuto accesso alla pagina specifica di un comando, nella sinistra abbiamo un menù che racchiude tutti comandi utilizzabili con MySQL.

Se invece cerchiamo un comando per fare una particolare operazione e non sappiamo come si chiama, possiamo accedere direttamente al sito di PHP e fare una ricerca dei comandi per categoria: sappiamo che è una operazione sulle stringhe? Cerchiamo tutti i comandi che si usano per operare sulle stringhe e li sfogliamo fino a trovare quello che a noi serve.

Gli errori di esecuzione

Quando proviamo un nostro script, può succedere che avvenga un errore di esecuzione (Error) o che ci appaia a video un avviso (Notice)... in entrambi i casi il parser PHP oltre ad indicarci il tipo di errore (Parse, Syntax, ecc) ci dice sempre la riga nella quale è avvenuto l'errore/avviso.

Aprendo il nostro codice alla riga indicata dobbiamo semplicemente cercare dove può essere l'errore:

- di solito i Syntax error avvengono perchè abbiamo dimenticato di chiudere una parentesi, un apice, o abbiamo inserito degli apici dentro altri apici senza usare il carattere di escape (\ backslash)

- di solito i Parser error avvengono perchè abbiamo scritto male un comando, facciamo eseguire una operazione non valida, richiamiamo una funzione inesistente o dimentichiamo il punto e virgola a fine riga

A volte capita che PHP ci dia un errore all'ultima riga di codice: questo avviene perchè abbiamo aperto da qualche parte una parentesi graffa { e non l'abbiamo mai chiusa!