PROGRAMMIAMO
PHP - File: Open e close

Apertura di un file

L'istruzione include (vista nella lezione precedente) permette semplicemente di includere in una pagina php l'intero contenuto di un file di testo. Con i file tuttavia è possibile fare molte più cose, come ad esempio memorizzare i dati di accesso di un utente, effettuare ricerche in un database, realizzare forum, blog etc. etc. Per fare ciò bisogna poter scrivere e leggere il contenuto di un file, in modo da inserire in esso dei dati oppure prelevarli.

Sebbene il PHP consenta anche l'utilizzo di altri tipi di file, nel seguito per semplicità faremo riferimento ai soli file di testo, cioè a quelli che contengono solo codici ASCII di caratteri testuali e che possono essere visualizzati con un comune editor di testo (es. il block-notes di windows).

Come in quasi tutti i linguaggi di programmazione, per poter utilizzare un file di testo in PHP è per prima cosa necessario "aprirlo". L'istruzione di apertura è la fopen e ha una sintassi molto simile a quella usata nel linguaggio C:

$puntatore = fopen("nomefile", "modalità");

dove:

- $puntatore è una variabile che, al termine dell'operazione di apertura, conterrà un puntatore al file stesso. Per ogni successiva operazione che si vorrà effettuare su quel file, sarà necessario usare quel puntatore. In pratica il puntatore è una sorta di identificatore del file. In PHP tutte le operazioni di lettura e scrittura su file vengono fatte attraverso i puntatori e non attraverso i nomi dei file.
- nomefile è evidentemente il nome del file, comprensivo di percorso (path) nel caso esso non sia nella stessa cartella in cui si trova la pagina PHP.
- modalità è una stringa che può assumere principalmente tre valori col seguente significato: "r" (file aperto in lettura), "w" (file aperto in scrittura), "a" (file aperto in modalità append).

Per esempio:

$pt = fopen("dati", "r");

apre un file di nome "dati" in modalità lettura (r, read) e lo associa a un puntatore di nome $pt.

L'apertura di un file in generale dev'essere effettuata una sola volta, prima di scrivere o di leggere il file stesso.

 

Chiusura di un file

L'istruzione simmetrica e opposta all'apertura di un file è la chiusura. Per chiudere un file è necessario conoscerne il puntatore (lo stesso utilizzato nell'apertura con la fopen) e la sintassi è semplicemente:

fclose($puntatore);

La chiusura di un file dev'essere fatta una sola volta, dopo che sono state completate tutte le operazioni di lettura e di scrittura su quel file.

Sebbene il PHP chiuda automaticamente eventuali file aperti al termine dello script, è buona norma di programmazione chiudere sempre i file aperti quando non servono più usando la fclose. Questo garantisce che il contenuto del file venga salvato correttamente, evitando il rischio di perdere i dati nel caso in cui l'esecuzione dello script dovesse abortire prima del termine.

 

Percorso del nome del file

Se il file da aprire non si trova nella stessa cartella della pagina PHP, è necessario, come detto, specificare l'intero percorso del file. Per garantire la portabilità della pagina (cioè la sua corretta esecuzione in ogni ambiente) è necessario specificare sempre percorsi relativi e non assoluti per il file stesso. Il seguente è un esempio di percorso assoluto di un file

$p = fopen("c:/documenti/sito/forum/testi/user.dat", "a");

mentre questo è un esempio di percorso relativo

$p = fopen("../testi/user.dat", "a");

dove il simbolo .. indica la cartella genitrice (parent) della cartella corrente. Il percorso assoluto permette il funzionamento corretto dello script anche su computer diversi da quello originario, poichè non è legato alla struttura specifica del file system del computer su cui è stato creato.

Si noti l'uso del forward slash (/) per suddividere cartelle e sottocartelle del percorso. Spesso, per il medesimo scopo, viene anche usato il back slash (\), ingenerando un po' di confusione a questo proposito. Occorre tenere a mente che:

- in UNIX e sistemi operativi derivati (es. Linux) il separatore di cartelle nei percorsi è il forward slash (/).
- in Windows è possibile indifferentemente l'uso sia del forward (/) che del back slash (\).
- il forward slash (/) viene usato anche come separatore nelle URL (indirizzi) delle pagine web
- in molti linguaggi di programmazione (fra i quali il C, il Javascript e il PHP) il backl slash (\) è anche usato per indicare caratteri speciali non stampabili, come andate a capo e tabulazioni.

In conclusione, conviene usare sempre il forward slash (/) nei percorsi file, dato che questo simbolo viene accettato indifferentemente sia nei sistemi Unix che in quelli Linux e inoltre non genera il rischio di confusione con i caratteri speciali.

 

precedente - successiva

Sito realizzato in base al template offerto da
Graphixmania.it - Grafica e non solo
http://www.graphixmania.it