SunshinePHP 2020 CFP Started

PharData::compress

(PHP 5 >= 5.3.0, PHP 7, PECL phar >= 2.0.0)

PharData::compressСжимает весь архив tar/zip, используя сжатие Gzip или Bzip2

Описание

PharData::compress ( int $compression [, string $extension ] ) : object

Для tar-архивов, этот метод произведет сжатие всего архива с помощью gzip или bzip2. Результирующий файл можно расжать с помощью команд gunzip или bunzip, либо использовать напрямую через расширение Phar.

Для zip-архивов этот метод выбросит исключение. Для gzip-сжатия должно быть доступно расширение zlib. Для bzip2-сжатия должно быть доступно расширение bzip2.

Этот метод переименовывает архив, добавляя к его имени расширение .gz, .bz2 или наоборот, убирающее его, если параметр типа сжатия задан как Phar::NONE. Также можно явно указать, какое расширение будет иметь файл.

Список параметров

compression

Одна из констант: Phar::GZ, Phar::BZ2, или Phar::NONE для отключения компрессии.

extension

По умолчанию файлу назначится расширение .tar.gz или .tar.bz2 для сжатия и .tar, если сжатие отключено.

Возвращаемые значения

Возвращает объект PharData.

Ошибки

Выбрасывает исключение BadMethodCallException если отсутствует необходимое расширение, zlib или bzip2.

Примеры

Пример #1 Пример использования PharData::compress()

<?php
$p 
= new PharData('/path/to/my.tar');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
$p1 $p->compress(Phar::GZ); // copies to /path/to/my.tar.gz
$p2 $p->compress(Phar::BZ2); // copies to /path/to/my.tar.bz2
$p3 $p2->compress(Phar::NONE); // exception: /path/to/my.tar already exists
?>

Смотрите также

  • Phar::compress() - Сжимает весь Phar-архив с помощью Gzip- или Bzip2-сжатия

add a note add a note

User Contributed Notes 2 notes

up
2
Christopher Marshall
3 years ago
This is a very irritating bug. You can use this to get around it though:

$data = 'some.test.string';
$phar = new PharData('test.tar');

$phar->compress(Phar::GZ, substr($data, strpos($data, '.') + 1));
up
0
c6h1206free at gmail dot com
3 years ago
This method destroys everything after the first dot in your filename and replaces it with the zip extension (.tar.gz, etc)

Example:

<?php

$tarfile
= "2.5.0.0-RC1.tar";
$pd = new \PharData($tarfile);
$pd->buildFromDirectory("/path/to/contents");
$pd->compress(\Phar::GZ);

?>

Ends up with a file named "2.tar.gz"
To Top