Skip to content

fi1a/filesystem

Repository files navigation

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

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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages