Istruzioni PHP in pillole

Tutte le istruzioni PHP finiscono con il carattere ; (punto e virgola)

VARIABILI

I nomi di variabili in PHP incominciano tutti con il carattere $ e non devono contenere caratteri speciali nè spazi. La dichiarazione non è obbligatoria .

Tipi di dati

In PHP esistono cinque tipi di dati:

boolean
possono contenere solo due valori: True oppure False
integer
numeri interi
float
numeri con la virgola
string
parole: dati alfanumerici
date
contengono una data (nel formato Unix)

Il linguaggio PHP è un linguaggio a tipizzazione debole: questo significa che le variabili non hanno un tipo predefinito, e l'interprete PHP cerca di capire dal contesto di quale tipo di dato si tratta.
Inoltre nel corso dell'esecuzione di un programma le variabili possono anche cambiare di tipo, cioè è possibile per esempio assegnare una stringa ad una variabile che prima conteneva un numero e viceversa.

INPUT

Dalla riga di comando

Se si usa il PHP dalla riga di comando, l'input avviene leggendo dallo standard input (tastiera):
L'istruzione di lettura è una funzione, quindi va preceduta dall' assegnazione alla variabile di input.
Es.: $a=fgets(STDIN)
Dato che a volte viene inserito uno spazio iniziale davanti all' input, è necessario eliminarlo, usando per esempio la funzione trim().
N.B.: nelle versioni PHP precedenti alla 5.0, è necessario aprire prima lo standard input proprio come fosse un file:

Nelle pagine web

Gli argomenti provenienti da un form in una precedente pagina, hanno lo stesso nome dei campi di input del form con il $ davanti
Nelle versioni successive alla 4.0, bisogna usare invece l'array associativo $_POST (oppure $_GET). In alternativa, si può modificare il file php.ini per mantenere la compatibilità con le versioni precedenti.

OUTPUT

L'output si ottiene con echo
Es: echo "ciao mondo";
        echo $a;

ASSEGNAZIONI

Le assegnazioni avvengono con il simbolo =


CALCOLI: con i soliti operatori matematici: + - * /


CONCATENAMENTO STRINGHE: con il . (non il +)


CONDIZIONI: gli operatori di confronto e logici sono uguali a javascript


SELEZIONE: if (condizione) {istruzioni} else {istruzioni} (come javascript)


RIPETIZIONE: while (condizione-ripetizione) {istruzioni} (come javascript)

do {istruzioni} while (condizione-ripetizione)


RIPETIZIONE ENUMERATIVA: foreach ($vettore as $variabile) {istruzioni}

for (inizializzazione; condizione-di-uscita; incremento) {istruzioni}


Istruzioni per gli archivi

APERTURA

L'operazione di apertura localizza un file sul disco e crea le strutture per usarlo, vale a dire un file handler (puntatore all'oggetto file) a cui viene associato un buffer di lettura/scrittura.

La sintassi per l'istruzione di apertura di un file è la seguente:

$f=fopen(“percorso/nome.ext”,”m”)

Dove il primo argomento tra virgolette (ma potrebbe anche essere una variabile) rappresenta il nome del file, con il percorso (assoluto o relativo) ed m rappresenta il modo di apertura che può essere:

w Apre in output.
Il contenuto del file viene sovrascritto a partire dall'inizio.
Quindi se il file contiene dei dati viene cancellato
L'unica operazione consentita dopo questa apertura è la scrittura
a Apre in append.
I dati possono essere aggiunti a partire dalla fine del file
L'unica operazione consentita dopo questa apertura è la scrittura
r Apre in input
I dati possono essere letti dal file.
Le operazioni consentite sono la lettura ed anche il posizionamento
r+ Apre in I/O (input/output).
I dati possono essere letti e scritti
Consente tutte le operazioni
w+ Apre in output e input
Questo significa che il file viene cancellato, poi può essere scritto e anche letto.
Consente tutte le operazioni

la variabile $f rappresenta l' identificatore del file (file handler), e viene usata nelle istruzioni successive per indicare a quale file si fa riferimento.
Infatti non è detto che in un programma si faccia riferimento ad un solo archivio, quindi è importante avere il modo di specificare su quale si vuole compiere una determinata operazione.

CHIUSURA

L' operazione di chiusura garantisce che tutti i dati presenti nel buffer vengano trascritti nel file.
E' buona norma chiudere un file non appena è terminato il suo utilizzo. In ogni caso, se il programma termina regolarmente, rilascia comunque tutte le risorse allocate, e quindi anche il file. In un ambiente multiutente, è bene comunque rilasciare le risorse non appena possibile

fclose($f)

LETTURA

$record=fread($f, lunghezza)

$record rappresenta la variabile letta: di solito con un istruzione si legge un intero record (registrazione, riga) del file.
$f è l'identificativo del file ottenuto dall'operazione di apertura
lunghezza rappresenta la lunghezza del record da leggere, o comunque il numero di byte che i desidera leggere

N.B. : questa istruzione è più indicata per leggere da un file con record a lunghezza fissa
Per leggere da un file con record a lunghezza variabile è meglio fgets che ha la stessa sintassi, ma che interrompe la lettura quando incontra il simbolo di fine riga.

SCRITTURA

fwrite($f, $record)

$record è la variabile da scrivere: solitamente si scrive un intero record (registrazione)
$f è l'identificativo del file ottenuto tramite l'operazione di apertura.

N.B.: per leggere dai file con record di lunghezza variabile, a volte si usa l'istruzione fputs al posto di fwrite, ma solamente per analogia con fgets.
Il funzionamento e la sintassi di fwrite e fputs sono del tutto identici

CONDIZIONE DI FINE FILE

feof($f)

Si può inserire in un if o in un ciclo.
Si può usare anche al contrario, cioè

!feof($f)

POSIZIONAMENTO

Il posizionamento si può usare solo nei file con record a lunghezza fissa. Se la lunghezza è variabile, non è possibile prevedere dove saranno collocati i record.

fseek($f, $pos)

$pos è la posizione calcolata in byte da dove si inizierà a leggere o a scrivere
La formula usata per calcolarla è la seguente:

$pos = ($N-1) * $L

Dove $N rappresenta il numero del record desiderato, e $L la lunghezza dei record.
Il puntatore viene posizionato sul byte successivo.

LETTURA TUTTO FILE SENZA APRIRLO

$vettore=file(“percorso/nome.ext”)

Avanti