PharData::compress

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

PharData::compressCompacta todo o arquivo tar/zip usando Gzip ou Bzip2

Descrição

public PharData::compress(int $compression, ?string $extension = null): ?PharData

Para arquivos tar, este método compacta o arquivo inteiro usando gzip ou bzip2. O arquivo resultante pode ser processado com o comando gunzip/comando bunzip ou acessado direta e transparentemente com a extensão Phar.

Para arquivos zip, este método falha com uma exceção. A extensão zlib deve estar habilitada para compactar com gzip, a extensão bzip2 deve estar habilitada para compactar com bzip2.

Além disso, este método renomeia automaticamente o arquivo, anexando .gz, .bz2 ou removendo a extensão se Phar::NONE for passado para remover a compactação. Alternativamente, uma extensão de arquivo pode ser especificada com o segundo parâmetro.

Parâmetros

compression

A compactação. Deve ser Phar::GZ, Phar::BZ2 para adicionar compactação ou Phar::NONE para remover compactação.

extension

Por padrão, a extensão é .tar.gz ou .tar.bz2 para compactar um tar e .tar para descompactar.

Valor Retornado

Um objeto PharData é retornado em caso de sucesso, ou null em caso de falha.

Erros/Exceções

Lança BadMethodCallException se a extensão zlib não estiver disponível ou se a extensão bzip2 não estiver habilitada.

Registro de Alterações

Versão Descrição
8.0.0 extension agora é anulável.

Exemplos

Exemplo #1 Um exemplo de PharData::compress()

<?php
$p
= new PharData('/caminho/para/meu.tar');
$p['meuarquivo.txt'] = 'olá';
$p['meuarquivo2.txt'] = 'olá';
$p1 = $p->compress(Phar::GZ); // copia para /caminho/para/meu.tar.gz
$p2 = $p->compress(Phar::BZ2); // copia para /caminho/para/meu.tar.bz2
$p3 = $p2->compress(Phar::NONE); // exceção: /caminho/para/meu.tar já existe
?>

Veja Também

  • Phar::compress() - Compacta todo o arquivo Phar usando compactação Gzip ou Bzip2

adicione uma nota

Notas Enviadas por Usuários (em inglês) 2 notes

up
6
Christopher Marshall
9 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
2
c6h1206free at gmail dot com
9 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