fi1a / filesystem
PHP filesystem обеспечивает уровень абстракции файловой системы
Requires
- php: ^7.3 || ^8
- ext-fileinfo: *
- fi1a/collection: ^2.0
Requires (Dev)
- captainhook/captainhook: ^5.4
- phpunit/phpunit: ^9.3
- slevomat/coding-standard: ^6.3
- squizlabs/php_codesniffer: ^3.5
- vimeo/psalm: ^4.3
README
Уровень абстракции файловой системы позволяет разрабатывать приложение без необходимости знать, где и как будут храниться файлы. Предоставляет один интерфейс для взаимодействия с разными типами файловых систем. Также классы абстракции файла и папки имеют вспомогательные методы для работы с ними.
Доступные адаптеры:
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
:
Пример создания папки:
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
:
Пример записи в файл:
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
:
Вспомогательные методы для файловой системы содержатся в классе Fi1a\Filesystem\Utils\LocalUtil
: