В PHP имеется несколько инструментов, осуществляющих работу с директориями (папками). Наверняка вы уже сталкивались с задачей получить список файлов из каталога, например, если вы ведете какую-либо запись базы, используя текстовые или CSV файлы, а возможно, вам просто необходимо написать файловый менеджер. До PHP5 стандартной реализацией итерации по каталогам было следующее решение:

<?php
$dir = opendir('./dir/') or die($php_errormsg);
while(FALSE !== ($file = readdir($dir))) {
    echo $file. '<br />';
}
?>

Но в версии PHP5 появился более мощный и универсальный, объектно-ориентированный инструмент для работы с файловой системой – класс DirectoryIterator:

<?php
foreach(new DirectoryIterator('./dir') as $file) {
echo $file ->getPathname() . '<br />';
}
?>

Таким образом мы не только упрощаем написание кода, но и делаем его более наглядным. Если ваш сервер имеет поддержку PHP5, что сейчас является повсеместным явлением, то советую вам использовать именно такой подход.

Полезные методы класса:

isFile () проверяет, является ли объект файлом.
isDir ()  является ли объект папкой
isDot () полезный элемент — проверяет, не является ли объект . Или ..
getExtension () возвращает расширение файла
isReadable () , isWritable () соответственно проверяет возможность чтения/записи

Это основные методы, чаще всего используемые в реальных приложениях (скриптах). Приведу один пример для наглядности:

Допустим нам необходимо получить список всех элементов только папки dir

Обычный метод:

<?php
$dir = opendir('./dir/') or die($php_errormsg);
while(FALSE !== ($file = readdir($dir))) {
    if('.' == $file && '..' == $file) continue;
        echo $file. '<br />';
}
?>
С использованием класса DirectoryIterator:

<?php
foreach(new DirectoryIterator('./dir') as $file) {
    if(TRUE == $file->isDot()) continue;
        echo $file ->getPathname() . '<br />';
}
?>

Гораздо лучше, не так ли?