Файловая система: Каталоги

Содержимое каталога

Метод list возвращает содержание каталога относительно корневого каталога.

Методы files и directories возвращают только нужный тип содержания. Второй аргумент true включает рекурсивный обход, метод allFiles – сокращение для рекурсивного списка файлов.

$disk = Storage::disk('uploads');

$items = $disk->list('reports');
$files = $disk->files('reports');
$nestedFiles = $disk->files('reports', recursive: true);
$allFiles = $disk->allFiles('reports');
$directories = $disk->directories('reports');
$nestedDirectories = $disk->directories('reports', recursive: true);
PHP

На дисках, элементы списков это объекты Imhotep\Filesystem\FileInfo. У них доступны методы getPathname(), getBasename(), type(), isFile(), isDir(), size() и lastModified().

foreach (Storage::disk('uploads')->list('reports') as $item) {
    if ($item->isFile()) {
        $name = $item->getBasename();
    }
}
PHP

Параметр hidden у методов list() и files() управляет обработкой служебных точек обхода. Он не является фильтром имён файлов, начинающихся с точки.

Создание, очистка и удаление

$disk = Storage::disk('uploads');

// Создаёт и промежуточные каталоги.
$disk->makeDirectory('reports/2026/july');

// Удаляет всё содержимое, но сохраняет сам каталог.
$disk->cleanDirectory('reports/temporary');

// Удаляет каталог вместе с содержимым.
$disk->deleteDirectory('reports/2026/july');
PHP

Метод makeDirectory() возвращает false, если каталог уже существует. Перед очисткой или удалением убедитесь в правильности относительного пути, операции рекурсивны.

Ограничения облачного S3-диска

S3 не имеет настоящих каталогов. Облачный драйвер только эмулирует их работу. Например, для получения списка файлов в каталоге, используйте:

$keys = Storage::cloud('s3')->files('reports/2026/');
PHP