fi1a/filesystem

PHP filesystem обеспечивает уровень абстракции файловой системы

1.0.8 2023-02-26 01:27 UTC

This package is auto-updated.

Last update: 2024-05-26 04:35:30 UTC


README

Latest Version Software License PHP Version Coverage Status Total Downloads Support mail

Уровень абстракции файловой системы позволяет разрабатывать приложение без необходимости знать, где и как будут храниться файлы. Предоставляет один интерфейс для взаимодействия с разными типами файловых систем. Также классы абстракции файла и папки имеют вспомогательные методы для работы с ними.

Доступные адаптеры:

  • 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 Определяет является ли путь абсолютным