Archiving extension for Yii2 Framework - zip, tar, tar.gz, tar.bz2, 7zip (for zip archive with supporting passwords). It's shell over ZippyExt.
Расширение для архивации в Yii2 Framework - в виде zip, tar, tar.gz, tar.bz2, 7zip (только для zip архива - в том числе с поддержкой паролей).
English:
Русский:
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist victor78/yii2-zipper:"~0.0.4"
or add
"victor78/yii2-zipper": "~0.0.4"
to the require section of your composer.json.
'type' and 'password' are optional.
return [
//....
'components' => [
'zipper' => [
'class' => 'Victor78\Zipper\Zipper', //required
'type' => '7zip', //or 'zip' (default), 'tar', 'tar.gz', 'tar.bz2'
'password' => 'password12345', //optional, only for 7zip type
],
]
];
To create archive:
//files to archive
$files = [
'/path/to/file1',
'/path/to/file2',
];
//to create tar archive
$tarArchive = Yii::$app->zipper->create('/tmp/archive.tar', $files, true, 'tar');
//to create zip archive by 7zip with password
$sevenZipArchive = Yii::$app->zipper->create('/tmp/archive.zip', $files, true, '7zip', 'password12345');
//or, if you've configured zipper component like in the example above:
$sevenZipArchive = Yii::$app->zipper->create('/tmp/archive.zip', $files);
$zipArchive = Yii::$app->zipper->create('/tmp/archive.zip', $files, true, 'zip');
To open archive and extract:
$zipArchive = Yii::$app->zipper->open('/tmp/archive.zip', 'zip');
$tarArchive = Yii::$app->zipper->open('/tmp/archive.tar', 'tar');
$sevenZipArchive = Yii::$app->zipper->open('/tmp/archive.zip', '7zip');
//open 7zip with password
$sevenZipArchiveEncrypted = Yii::$app->zipper->open('/tmp/archive.zip', '7zip', 'password12345');
$zipArchive->extract('/tmp/extracted/');
When you configure zipper component with optional properties 'type' and 'password', they will be used as default fourth and fifth parameters in create method, and as default second and third parameters in open method. If you use parameters in this methods obviously, they will overwrite properties from the config. You can leave out properties in the config and the parameters in the methods at all - in this case Zipper will trying understand which adapter to use, but it doesn't work with 7zip archive.
Both this methods return Archive object. You can find the details about how to use this object and other information in documentation of ZippyExt libruary.
- For zip type Zipper try to use console command zip or php zip extension, so one of them is required on server for zipping.
- For tar, tar.gz, tar.bz2 Zipper try to use GNU tar and BSD tar, so one ofo them is required on server for these ways of arching.
- For zipping by 7zip, the 7za utiliy is required on server.
Предпочтительным способом установки является при помощи composer.
Либо командой из консоли
php composer.phar require --prefer-dist victor78/yii2-zipper:"~0.0.4"
либо включением в composer.json в секцию require.
"victor78/yii2-zipper": "~0.0.4"
'type' и 'password' - опциональны.
return [
//....
'components' => [
'zipper' => [
'class' => 'Victor78\Zipper\Zipper', //required
'type' => '7zip', //или: 'zip' (по умолчанию), 'tar', 'tar.gz', 'tar.bz2'
'password' => 'password12345', //опционально, работает только при типе 7zip
],
]
];
Для создания архива:
//files to archive
$files = [
'/path/to/file1',
'/path/to/file2',
];
//создать tar архив
$tarArchive = Yii::$app->zipper->create('/tmp/archive.tar', $files, true, 'tar');
//создать zip архив с паролем при помощи 7zip
$sevenZipArchive = Yii::$app->zipper->create('/tmp/archive.zip', $files, true, '7zip', 'password12345');
//или, если вы настроили компонент Zipper как в примере выше:
$sevenZipArchive = Yii::$app->zipper->create('/tmp/archive.zip', $files);
$zipArchive = Yii::$app->zipper->create('/tmp/archive.zip', $files, true, 'zip');
Открыть и распаковать архив:
$zipArchive = Yii::$app->zipper->open('/tmp/archive.zip', 'zip');
$tarArchive = Yii::$app->zipper->open('/tmp/archive.tar', 'tar');
$sevenZipArchive = Yii::$app->zipper->open('/tmp/archive.zip', '7zip');
//открыть запароленный zip созданный при помощи 7zip
$sevenZipArchiveEncrypted = Yii::$app->zipper->open('/tmp/archive.zip', '7zip', 'password12345');
$zipArchive->extract('/tmp/extracted/');
Если вы настроили компонент Zipper с опциональными свойствами 'type' и 'password', они будут использованы как дефолтные четвертый и пятый параметры с методе create и второй и третий параметры в методе open. Если эти параметры в этих методах указываются явно, то они переписывают свойства из конфига. Вы можете опустить свойства из конфига и параметры в методах вообще - в таком случае Zipper попытается самостоятельно понять какой именно адаптер какого архиватора использовать, но это точно не будет работать в случае zip архива, созданного при помощи 7zip.
Оба метода возвращают объект Archive. Вы можете найти детали о том, как использовать данный объект и другую информацию в документации к библотеке ZippyExt.
- Для архивирования в чистый zip используется утилита zip или расширение PHP для zip, так что или утилита, или расширение должны быть установлены на сервере для упавки и разупаковки zip.
- Для tar, tar.gz, tar.bz2 Zipper пытается использовать GNU tar или BSD tar, один из них должен быть установлен на сервере для этих типов архивов.
- Для упаковки/разупаковки zip при помощи 7zip, на сервере должа быть установлена утилита 7za.