Метод allDirectories
Метод allDirectories класса Storage применяется для получения всех директорий внутри указанного пути, включая все вложенные поддиректории. В отличие от метода directories, который возвращает только директории первого уровня, allDirectories рекурсивно обходит все уровни вложенности. Метод принимает первым параметром путь к директории, вторым - необязательный параметр для указания диска. Возвращает массив строк, содержащих пути к найденным директориям.
Синтаксис
<?php
Storage::allDirectories($path, $disk);
?>
Пример
Давайте получим все директории внутри папки 'public':
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Storage;
class StorageController extends Controller
{
public function index()
{
$res = Storage::allDirectories('public');
foreach ($res as $dir) {
echo $dir . "\n";
}
}
}
?>
Результат выполнения кода:
"public/images"
"public/images/avatars"
"public/images/gallery"
"public/documents"
"public/documents/reports"
"public/temp"
Пример
Давайте получим все директории внутри корня диска:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Storage;
class StorageController extends Controller
{
public function index()
{
$res = Storage::allDirectories('/');
if (empty($res)) {
echo "No directories found";
} else {
foreach ($res as $dir) {
echo $dir . "\n";
}
}
}
}
?>
Результат выполнения кода:
"docs"
"docs/api"
"docs/guides"
"temp"
"uploads"
"uploads/images"
"uploads/files"
Пример
Давайте получим все директории, используя другой диск:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Storage;
class StorageController extends Controller
{
public function index()
{
$res = Storage::allDirectories('/', 's3');
foreach ($res as $dir) {
echo $dir . "\n";
}
}
}
?>
Результат выполнения кода:
"backup"
"backup/2023"
"backup/2023/january"
"backup/2023/february"
"media"
"media/videos"
"media/audio"
Пример
Давайте подсчитаем количество всех директорий в папке:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Storage;
class StorageController extends Controller
{
public function index()
{
$res = Storage::allDirectories('storage');
echo "Total directories: " . count($res);
}
}
?>
Результат выполнения кода:
"Total directories: 15"
Смотрите также
-
метод
directories,
который возвращает только директории первого уровня -
метод
allFiles,
который рекурсивно получает все файлы -
метод
files,
который получает файлы только первого уровня -
метод
exists,
который проверяет существование пути