Phar::compress

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

Phar::compressCompacta todo o arquivo Phar usando compactação Gzip ou Bzip2

Descrição

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

Nota:

Este método requer que a configuração phar.readonly do php.ini seja definida como 0 para funcionar com objetos Phar. Caso contrário, uma exceção PharException será lançada.

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

Para arquivos phar baseados em Zip, este método falha com uma exceção. A extensão zlib deve estar habilitada para compactar com compactação gzip, a extensão bzip2 deve estar habilitada para compactar com compactação bzip2. Como acontece com todas as funcionalidades que modificam o conteúdo de um phar, a variável INI phar.readonly deve estar desativada para funcionar.

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 é .phar.gz ou .phar.bz2 para compactar arquivos phar, e .phar.tar.gz ou .phar.tar.bz2 para compactar arquivos tar. Para descompactação, as extensões de arquivo padrão são .phar e .phar.tar.

Valor Retornado

Retorna um objeto Phar ou null em caso de falha.

Erros/Exceções

Lança BadMethodCallException se a variável INI phar.readonly estiver ativada, a extensão zlib não estiver disponível ou 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 Phar::compress()

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

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 1 note

up
1
mike at eyesis dot ca
14 years ago
For those who want the benefit of having a small compressed PHAR archive but don’t want to suffer the performance loss, use php_strip_whitespace when adding files to the archive. If your code has plenty of whitespace, docbocks, and single-line comments this function can greatly decrease archive size without the performance loss.

<?php
$sDir
= 'application';
$oPhar = new Phar ('app.phar');

$oDir = new RecursiveIteratorIterator (new RecursiveDirectoryIterator ($sDir), RecursiveIteratorIterator::SELF_FIRST);

foreach (
$oDir as $sFile) {
if (
preg_match ('/\\.php$/i', $sFile) ) {
$oPhar->addFromString (substr ($sFile, strlen ($sDir) + 1), php_strip_whitespace ($sFile));
}
}
?>
To Top