russsiq / laravel-zipper
Класс-обертка для архиватора ZipArchive в Laravel 9.x.
Requires
- php: 8.1.*
- ext-zip: *
- illuminate/filesystem: 9.*
- illuminate/support: 9.*
Requires (Dev)
- mockery/mockery: ^1.5.0
- phpunit/phpunit: ^9.5.20
README
Подключение
Для добавления зависимости в проект на Laravel, используйте менеджер пакетов Composer:
composer require russsiq/laravel-zipper
Если в вашем приложении включен отказ от обнаружения пакетов в директиве dont-discover
в разделе extra
файла composer.json
, то необходимо самостоятельно добавить следующее в файле config/app.php
:
- Провайдер услуг в раздел
providers
:
Russsiq\Zipper\ZipperServiceProvider::class,
- Псевдоним класса (Facade) в раздел
aliases
:
'Zipper' => Russsiq\Zipper\Facades\Zipper::class,
Использование
Методы
Все публичные методы доступны через фасад Zipper
:
Zipper::someMethod(example $someParam);
Список доступных публичных методов класса-обертки Zipper
:
- addDirectory
- addEmptyDirectory
- addFile
- addFromString
- close
- create
- deleteDirectory
- deleteFile
- extractTo
- filename
- open
addDirectory(string $realPath, string $relativePath): bool
Добавить в архив директорию.
addEmptyDirectory(string $dirname): bool
Добавить в архив пустую директорию.
addFile(string $filename, string $localname = null): bool
Добавить в архив файл по указанному пути.
addFromString(string $localname, string $contents) : bool
Добавить в архив файл, используя содержимое строки.
close(): bool
Закрыть текущий (открытый или созданный) архив и сохранить изменения.
create(string $filename): self
Создать архив для последующей работы с ним (для чтения, записи или изменения).
deleteDirectory(string $dirname): bool
Удалить элемент (каталог) из архива, используя его имя.
deleteFile(string $filename): bool
Удалить элемент (файл) из архива, используя его имя.
extractTo(string $destination, array $entries = null): bool
Извлечь весь архив или его части в указанное место назначения.
filename(): ?string
Получить полный путь, включая имя, текущего рабочего архива.
open(string $filename): self
Открыть архив для последующей работы с ним (для чтения, записи или изменения).
Пример использования
Для инициализации класса-обертки Zipper
вы можете воспользоваться одним из двух методов одноименного фасада Zipper
:
use Russsiq\Zipper\Facades\Zipper; // Полный путь к создаваемому архиву. $filename = \storage_path('/tmp/new-ziparchive.zip'); // Класс-обертка выбросит исключение, // при попытки перезаписи существующего файла. if (!\file_exists($filename)) { // Создание нового архива в формате `*.zip`. $zipper = Zipper::create($filename); // Добавление нового файла в архив из содержимого строки. $zipper->addFromString('new-file.txt', 'dummy contents'); // Закрытие архива для принятия внесенных изменений. $zipper->close(); }
use Russsiq\Zipper\Facades\Zipper; // Полный путь к открываемому архиву. $filename = \storage_path('/tmp/exists-ziparchive.zip'); // Полный путь назначения для извлечения содержимого архива. $destination = \storage_path('/tmp/extracted'); // Класс-обертка выбросит исключение, // при попытки открытия несуществующего файла архива. if (\file_exists($filename)) { // Открытие существующего архива в формате `*.zip`. $zipper = Zipper::open($filename); // Извлечение всего содержимого из файла архива. $zipper->extractTo($destination); // Закрытие архива для принятия внесенных изменений. $zipper->close(); }
Тестирование
Для запуска тестов используйте команду:
composer run-script test
Для запуска тестов и формирования agile-документации, генерируемой в HTML-формате и записываемой в файл tests/testdox.html, используйте команду:
composer run-script testdox
Удаление пакета
Для удаления пакета из вашего проекта на Laravel используйте команду:
composer remove russsiq/laravel-zipper
Лицензия
laravel-zipper
– программное обеспечение с открытым исходным кодом, распространяющееся по лицензии MIT.