Iterazione sulle Directory in PHP

PHP fornisce una serie di strumenti nativi per esplorare e iterare attraverso i contenuti di una directory. Queste funzionalità sono utili quando si desidera leggere file, elencare contenuti o gestire archivi in modo dinamico.

Funzione opendir(), readdir() e closedir()

Il metodo più tradizionale per leggere i contenuti di una directory utilizza le funzioni opendir(), readdir() e closedir(). Ecco un esempio:


$directory = '/percorso/alla/cartella';

if (is_dir($directory)) {
    if ($dh = opendir($directory)) {
        while (($file = readdir($dh)) !== false) {
            echo "Nome file: $file\n";
        }
        closedir($dh);
    }
}

Utilizzo di scandir()

La funzione scandir() restituisce un array contenente i nomi dei file e delle directory presenti in una determinata directory. È un metodo semplice e veloce.


$files = scandir('/percorso/alla/cartella');

foreach ($files as $file) {
    echo "Elemento: $file\n";
}

Iteratori SPL: DirectoryIterator

PHP offre anche una soluzione orientata agli oggetti attraverso gli SPL (Standard PHP Library). DirectoryIterator fornisce un'interfaccia elegante per esplorare le directory.


$dir = new DirectoryIterator('/percorso/alla/cartella');

foreach ($dir as $fileinfo) {
    if (!$fileinfo->isDot()) {
        echo "Nome: " . $fileinfo->getFilename() . "\n";
    }
}

Filtrare con FilesystemIterator e RegexIterator

Per un controllo più raffinato, è possibile usare FilesystemIterator in combinazione con RegexIterator per filtrare i file in base a pattern specifici.


$files = new FilesystemIterator('/percorso/alla/cartella');

$regex = new RegexIterator($files, '/\.txt$/');

foreach ($regex as $file) {
    echo "File di testo: " . $file->getFilename() . "\n";
}

Conclusione

A seconda delle necessità, PHP mette a disposizione diverse tecniche per iterare sulle directory. I metodi SPL offrono una maggiore flessibilità e leggibilità rispetto ai metodi tradizionali, risultando più adatti per applicazioni moderne e scalabili.

Torna su