базовый курс

ГРУППА КУРСА

Каталоги

Получение файлов из каталога

Сначала рассмотрим современный способ получения файлов. Он появился в версии PHP 5. Функция scandir() возвращает массив, содержащий имена каталогов и файлов в указанном каталоге.

scandir (адрес, сортировка, контекст)

Параметры:

адрес - абсолютный или относительный адрес каталога

сортировка - определяет, в каком порядке будут находиться файлы в массиве. Принимает значения: SCANDIR_SORT_ASCENDING - в алфавитном порядке (по умолчанию), SCANDIR_SORT_DESCENDING - в алфавитном порядке, но по убыванию, SCANDIR_SORT_NONE - без сортировки

контекст - ресурс контекста. Необязательный параметр.

Указанные константы для сортировки появились, начиная с версии PHP 5.4.0. В предыдущих версиях сортировка указывалась по другому. Любое значение, отличное от нулевого, определяет сортировку по убыванию, а 0 сортировку по возрастанию.

В массиве, который возвращает функция, кроме имён файлов и директорий, всегда есть два значения: "." и "..". Одна точка означает текущий каталог, а две точки означают родительский каталог.

Для примера создадим в папке со скриптами папку с именем mydirectory. Скопируем в неё несколько файлов. Выведем на страницу список файлов из директории.

+
1
2
<?php
header('Content-type: text/html; charset=utf-8');
3
4
$dir = scandir('mydirectory');
print_r($dir);

Когда получены имена файлов, можно работать с ними. Чтобы отличить файлы от папок, можно использовать функции is_file() и is_dir(), которые описаны в прошлой теме.

В более ранных версиях PHP получение файлов из каталога осуществлялось иначе. Для этого каталог нужно открыть. Это делается при помощи функции opendir(), которая возвращает дескрептор каталога. Используя этот дескрептор, функция readdir() возвращает имя одного файла или каталога. Сначала первый файл, потом следующий и так далее. Когда файлы заканчиваются, функция возвращает false. Чтобы получить все файлы, нужно запустить функцию в цикле, пока она не вернёт false.

Выбор каталога

Часто возникает необходимоть работать с текущим каталогом, то есть с тем, в котором находится скрипт. Для выбора этого каталога не обязательно указывать абсолютный адрес. Можно указать по-другому. Одна точка означает текущую директорию, а две точки означают родительскую директорию. Пример:

3
4
$dir = scandir('.'); // файлы текущей директории
$dir = scandir('..'); // файлы родительской директории 

Функция getcwd() возвращает адрес текущей директории.

5
echo '<br>'.getcwd();

В PHP есть возможность выбрать другой каталог. Для этого используется функция chdir(). При этом указанный каталог становится текущим.

6
chdir('newdir');

Создание, перемещение и удаление каталога

Функция mkdir() создаёт новый каталог. Возвращает true в случае успеха.

mkdir (адрес, режим доступа, вложенные каталоги, контекст)

Параметры:

адрес - абсолютный или относительньный адрес нового каталога

режим доступа - режим доступа к каталогу. По умолчанию 0777

вложенные каталоги - позволяет создать каталог вместе с вложенным каталогом, в котором также могут быть вложенные каталоги. Общая структура описывается в адресе. Для этого параметру нужно указать true.

контекст - ресурс контекста

Обязателен только первый параметр.

Создадим в текущем каталоге новый каталог. Учитывайте, что в 6 строке текущим был выбран другой каталог.

7
mkdir('usdir');

Для переименования и перемещения директорий применяется функция rename(), которая также используется и для файлов. Она рассмотрена в предыдущей теме.

Функция rmdir() удаляет каталог. При этом он должен быть пустым. Если он не пустой, то сначала нужно переместить или удалить из него все файлы. Функция возвращает true при успешном удалении.

8
rmdir('ndir');