Уровень абстракции файловой системы позволяет разрабатывать приложение без необходимости знать, где и как будут храниться файлы. Предоставляет один интерфейс для взаимодействия с разными типами файловых систем. Также классы абстракции файла и папки имеют вспомогательные методы для работы с ними.
Доступные адаптеры:
Fi1a\Filesystem\Adapters\LocalAdapter
- адаптер файловой системы.
Установить этот пакет можно как зависимость, используя Composer.
composer require fi1a/filesystem
Класс файловой системы имеет три фабричных метода для получения классов абстракции файлов и папок.
- factory - опредляет до чего передан путь и создает объект абстракции файла или папки;
- factoryFolder - создает объект абстракции папки файловой системы;
- factoryFile - создает объект абстракции файла файловой системы.
use Fi1a\Filesystem\Adapters\LocalAdapter;
use Fi1a\Filesystem\Filesystem;
$adapter = new LocalAdapter(__DIR__ . '/Resources');
$filesystem = new Filesystem($adapter);
$folder = $filesystem->folder('./folder'); // Fi1a\Filesystem\FolderInterface
$folder->make();
$folder = $filesystem->factory('./folder'); // Fi1a\Filesystem\FolderInterface
$folder->isExist(); // true
$file = $filesystem->file($folder->getPath() . '/file.txt'); // Fi1a\Filesystem\FileInterface
$file->make();
$file = $filesystem->factory('/folder/file.txt'); // Fi1a\Filesystem\FileInterface
$file->isExist(); // true
Класс абстракции папки предназначен для упрощения работы с папкой, независимо от выбранной файловой системы.
Методы Fi1a\Filesystem\FolderInterface
:
Метод | Описание |
---|---|
getPath() | Возвращает путь |
isExist(): bool | Проверяет существование |
isFile(): bool | Является ли файлом |
isFolder(): bool | Является ли папкой |
getSize() | Возвращает размер |
getName() | Возвращает имя |
getParent() | Возвращает класс родительской папки |
peekParentPath() | Возвращает путь до родительской папки |
canRead(): bool | Проверяет возможность чтения |
canWrite(): bool | Проверяет возможность записи |
make(): bool | Создание |
delete(): bool | Удаляет |
copy(string $path): bool | Копирует |
rename(string $newName): bool | Переименовывает |
move(string $path): bool | Перемещает |
all() | Возвращает коллекцию из дочерних элементов |
allFiles() | Возвращает коллекцию из дочерних файлов |
allFolders() | Возвращает коллекцию из дочерних папок |
getFilesystem(): FilesystemInterface | Возвращает объект файловой системы |
getFolder(string $path): FolderInterface | Возвращает дочернюю папку |
getFile(string $path): FileInterface | Возвращает дочерний файл |
Пример создания папки:
use Fi1a\Filesystem\Adapters\LocalAdapter;
use Fi1a\Filesystem\Filesystem;
$adapter = new LocalAdapter(__DIR__ . '/Resources');
$filesystem = new Filesystem($adapter);
$folder = $filesystem->folder('./folder'); // Fi1a\Filesystem\FolderInterface
if (!$folder->isExist()) {
$folder->make(); // true
}
Класс абстракции файла предназначен для упрощения работы с файлом, независимо от выбранной файловой системы.
Методы Fi1a\Filesystem\FileInterface
:
Метод | Описание |
---|---|
getPath() | Возвращает путь |
isExist(): bool | Проверяет существование |
isFile(): bool | Является ли файлом |
isFolder(): bool | Является ли папкой |
getSize() | Возвращает размер |
getName() | Возвращает имя |
getBaseName(): string | Возвращает имя без расширения |
getExtension() | Возвращает расширение |
getParent() | Возвращает класс родительской папки |
peekParentPath() | Возвращает путь до родительской папки |
canRead(): bool | Проверяет возможность чтения |
canWrite(): bool | Проверяет возможность записи |
canExecute(): bool | Проверяет возможность выполнения |
make(): bool | Создание |
delete(): bool | Удаляет |
copy(string $path): bool | Копирует |
rename(string $newName): bool | Переименовывает |
move(string $path): bool | Перемещает |
read() | Возвращает содержимое файла |
write(string $content) | Запись в файл |
getMTime() | Возвращает время изменения файла |
getFilesystem(): FilesystemInterface | Возвращает объект файловой системы |
Пример записи в файл:
use Fi1a\Filesystem\Adapters\LocalAdapter;
use Fi1a\Filesystem\Filesystem;
$adapter = new LocalAdapter(__DIR__ . '/Resources');
$filesystem = new Filesystem($adapter);
$file = $filesystem->file('./folder/file.txt'); // Fi1a\Filesystem\FileInterface
$file->write('file content'); // 12
Адаптер файловой системы Fi1a\Filesystem\Adapters\LocalAdapter
предназначен для использования локальной файловой системы
в классах абстракции.
use Fi1a\Filesystem\Adapters\LocalAdapter;
use Fi1a\Filesystem\Filesystem;
$adapter = new LocalAdapter(__DIR__ . '/Resources');
$filesystem = new Filesystem($adapter);
Аргументы конструктора Fi1a\Filesystem\Adapters\LocalAdapter
:
Аргумент | Описание |
---|---|
string $directory | Путь ограничивающий доступ |
int $rights = 0775 | Права устанавливаемые по умолчанию для новых папок и файлов |
Вспомогательные методы для файловой системы содержатся в классе Fi1a\Filesystem\Utils\LocalUtil
:
Метод | Описание |
---|---|
isAbsolutePath(string $path): bool | Определяет является ли путь абсолютным |