Una situazione che un web developer si troverà sempre a dover affrontare, in qualsiasi applicazione web, è la manipolazione dei file: creazione, lettura e scrittura. Nel tutorial di oggi vedremo come semplificare al massimo la questione progettando e realizzando una classe (vedi programmazione OOP) che ci metta a disposizione dei comodi metodi per la manipolazione dei file.

Chiameremo la nostra classe (o oggetto) “phpFile” e la doteremo di due variabili:

filename (contiene il nome del file con cui lavorare)
handle (mantiene la connessione con il file)

Vediamo il codice dello “scheletro” della nostra classe:

class phpFile {
 
//Contiene il nome del file
var $filename;
//Mantiene la connessione con il file
var $handle;
 
}

Stabiliamo ora i metodi che ci serviranno per poter operare con i file, quantomeno quelli fondamentali:

setFilename (imposta il nome del file con cui lavorare)
open (apre la connessione con il file)
read (legge il contenuto del file)
write (scrive il file)
close (chiude la connessione con il file)

Vediamo ora nel dettaglio ogni singolo metodo con i relativi parametri 😉

//Imposta il nome del file
function setFilename($name) {
$this->filename = $name;
}

Il metodo setFilename ha un solo parametro, il nome del file con cui lavorare.

//Apre la connessione con il file
function open($type='a') {
$this->handle=fopen($this->filename,$type);
}

Il metodo open ha un solo parametro, il tipo di apertura del file. Di default, questo parametro, è settato ad a (aggiunta, I dati saranno aggiunti in coda a quelli già scritti, se il file non esiste sarà creato). E’ possibile specificare uno dei seguenti tipi oltre ad a:

a+ (aggiunta e lettura, I dati saranno aggiunti in coda a quelli già scritti, se il file non esiste sarà creato)
r (sola lettura)
r+ (lettura e scrittura, scrive all’inizio del file)
w (sola scrittura, I dati già scritti andranno persi e se il file non esiste sarà creato)
w+ (lettura e scrittura, I dati già scritti andranno persi e se il file non esiste sarà creato. Scrive all’inizio del file)

//Legge il contenuto del file
function read() {
$var=fread($this->handle,filesize($this->filename));
return($var);
}

Il metodo read legge tutto il contenuto del file. Questo metodo non ha alcun parametro.

//Scrive il file
function write($content) {
$var = fwrite($this->handle, $content);
return($var);
}

Il metodo write scrive il file ed ha un unico parametro, il testo da scrivere nel file.

//Chiude la connessione con il file
function close() {
fclose($this->handle);
}

Il metodo close chiude la connessione con il file e non ha alcun parametro.

Ecco il codice completo della nostra classe:

class phpFile {
 
//Contiene il nome del file
var $filename;
//Mantiene la connessione con il file
var $handle;
 
//Imposta il nome del file
function setFilename($name) {
$this->filename = $name;
}
 
//Apre la connessione con il file
function open($type='a') {
$this->handle=fopen($this->filename,$type);
}
 
//Legge il contenuto del file
function read() {
$var=fread($this->handle,filesize($this->filename));
return($var);
}
 
//Scrive il file
function write($content) {
$var = fwrite($this->handle, $content);
return($var);
}
 
//Chiude la connessione con il file
function close() {
fclose($this->handle);
}
 
}

Utilizzo della classe

Vediamo ora come utilizzare la classe includendola in un file PHP, istanziandola e richiamando gli opportuni metodi. Nel mio esempio, lavorerò in una directory “myfiles“. Per il corretto funzionamento dello script, verificate sul vostro spazio web se la cartella di lavoro ha bisogno dei permessi di scrittura (0777). Passiamo ora all’utilizzo 😉

Scrivere il file

include("file.php");
$file = new phpFile();
$file->setFilename("myfiles/prova.txt");
$file->open();
$file->write("testo di prova");
$file->close();

Leggere il file

include("file.php");
$file = new phpFile();
$file->setFilename("myfiles/prova.txt");
$file->open("r");
$text = $file->read();
echo "File: " .$text;

Questa classe era piuttosto semplice da realizzare ed è stata un buon esempio per capire come va strutturata una classe in PHP. La classe può essere ovviamente “affinata” con nuove implementazioni e utility per una manipolazione/gestione dei file più completa. Per la cronaca, la classe, si avvale delle funzioni PHP fopen, fread, fwrite ed fclose. Al prossimo tutorial 😉

NO SPAM. Non fornirò la tua email a terzi e riceverai solo contenuti che ti interessano sugli argomenti che tratto e potrai cancellarti quando vuoi con un link che trovi in tutte le email.