Leggere file con SplFileInfo

Mattepuffo's logo
Leggere file con SplFileInfo

Leggere file con SplFileInfo

L'oggetto SplFileInfo fa parte della cosiddetta Standard PHP Library (SPL).

La sto scoprendo in questi giorni, vista anche la maggiore importanza che ha dalla versione 5.3 del linguaggio.

Infatti dalla versione 5.3 è diventata parte integrante di PHP e non può essere disinstallata o disattivata.

Oggi vediamo come leggere un file utilizzando due oggetti: SplFileInfo e SplFileObject.

 

Visto che ormai parliamo di OOP creiamoci una classe apposita:

<?php

class Read {

    private $file;

    public function __construct($file) {
        $this->file = new SplFileInfo($file);
    }

    public function getLines() {
        if ($this->file->isFile()) {
            $openFile = $this->file->openFile('r');
            while (!$openFile->eof()) {
                echo $openFile->fgets();
            }
        } else {
            echo '<p class="error">Il file ' . $this->file->getBasename() . ' non esiste</p>';
        }
    }

}

Il percorso del file lo passiamo al costruttore, dove inizializiamo un oggetto SplFileInfo.

Poi abbiamo una funzione per leggere tutte le righe del file.

Con la funzione isFile() controlliamo se il file esiste ed regolare.

Sotto apriamo il file in lettura; con $openFile creiamo una variabile che rappresenta un oggetto SplFileObject.

Nel while controlliamo quando arriaviamo alla fine del file e stampiamo le righe lette con fgtes().

Se invece non è un file regolare o non esiste stampiamo l'errore e il nome del file che abbiamo indcato usando la funzione getBasename().

La classe la richiamiamo nel modo seguente:

include_once 'import.php';
$f = new Readt('path/to/file,txt);
$f->getLines();

Il tutto è abbastanza semplice, ma abbastanza diverso dal metodo procedurale.

Io preferisco la OOP e sto pian piano passando tutti i miei script a questo paradigma.


Condividi

Commentami!