russsiq/laravel-zipper

Класс-обертка для архиватора ZipArchive в Laravel 9.x.

0.3.0 2022-04-22 00:37 UTC

This package is auto-updated.

Last update: 2024-04-22 04:56:49 UTC


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(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.