В 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, что сейчас является повсеместным явлением, то советую вам использовать именно такой подход.
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 />'; } ?>
<?php foreach(new DirectoryIterator('./dir') as $file) { if(TRUE == $file->isDot()) continue; echo $file ->getPathname() . '<br />'; } ?>
Гораздо лучше, не так ли?