Home / Programmazione / PHP / Listare file e directory con la Standard PHP Library
Mattepuffo

Listare file e directory con la Standard PHP Library

Listare file e directory con la Standard PHP Library

Come ho già anticipato in altri articoli la SPL (Standard PHP Library) è un insieme di strumenti che PHP ci mette a disposizione e che ci permette di velocizzare alcune operazioni.

Oggi vediamo come usare l'oggetto DirectoryIterator per listare file e directory.

Se guardate la documentazione ufficiale possiamo notare che la classe estende ed implementa diverse altre classi.

Questo fa si che il lavoro sporco viene fatto dalla classe lasciando al programmatore molto meno lavoro.

La classe è inoltre dotata di parecchie funzioni utili.

Andiamo quindi a costruire una nostra classe per usare questo oggetto:

<?php

class GestioneFileDirectory {

    public function getSubDirectory($directory) {
        $iterator = new DirectoryIterator($directory);
        $fileArray = array();
        foreach ($iterator as $dir) {
            if ($dir->isDir() && !$dir->isDot()) {
                $fileArray[] = $dir->getFilename();
            }
        }
        return $fileArray;
    }

}

Una sola funzione, che si occupa del listare la directory da noi indicata, alla ricerca delle sottodirectory.

Notate infatti che l'istruzione if dentro al foreach da due controlli: con isDir() controlliamo se quella che incontra è una directory, e con isDot() controlliamo se l'item è '.' o '..'.

Se la prima è vera e la seconda no riempiamo l'array.

Ovviamente possiamo sostituire isDir() con isFile() per identificare solo i file.

Poi nella nostra pagina dobbiamo richiamare il tutto:

<?php
require_once '../lib/gestione_file_directory.php';
$gestFileDir = new GestioneFileDirectory();
?>
<select name="sezione">
  <option value="*">*</option>
  <?php
  foreach ($gestFileDir->getSubDirectory(PDF) as $dir) {
     echo '<option value="' . $dir . '">' . $dir . '</option>';
  }
  ?>
</select>

Provate a controllare il risultato!