Phar::compressFiles

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

Phar::compressFilesCompacta todos os arquivos no arquivo Phar atual

Descrição

public Phar::compressFiles(int $compression): void

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, este método gera uma BadMethodCallException, pois a compactação de arquivos individuais dentro de um arquivo tar não é suportada pelo formato de arquivo. Use Phar::compress() para compactar um arquivo phar inteiro baseado em tar.

Para arquivos phar baseados em zip e phar, este método compacta todos os arquivos no arquivo Phar usando a compactação especificada. As extensões zlib ou bzip2 devem estar habilitadas para aproveitar este recurso. Além disso, se algum arquivo já estiver compactado usando a compactação bzip2/zlib, a respectiva extensão deve ser habilitada para descompactá-lo antes da compactação. Assim como acontece com todas as funcionalidades que modificam o conteúdo de um arquivo Phar, a variável INI phar.readonly deve estar desativada para funcionar.

Parâmetros

compression

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

Valor Retornado

Nenhum valor é retornado.

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 se algum arquivo estiver compactado usando a compactação bzip2 e a extensão bzip2 não estiver habilitada.

Exemplos

Exemplo #1 Um exemplo de Phar::compressFiles()

<?php
$p
= new Phar('/caminho/para/meu.phar', 0, 'meu.phar');
$p['meuarquivo.txt'] = 'olá';
$p['meuarquivo2.txt'] = 'olá';
foreach (
$p as $file) {
var_dump($file->getFileName());
var_dump($file->isCompressed());
var_dump($file->isCompressed(Phar::BZ2));
var_dump($file->isCompressed(Phar::GZ));
}
$p->compressFiles(Phar::GZ);
foreach (
$p as $file) {
var_dump($file->getFileName());
var_dump($file->isCompressed());
var_dump($file->isCompressed(Phar::BZ2));
var_dump($file->isCompressed(Phar::GZ));
}
?>

O exemplo acima produzirá:

string(14) "meuarquivo.txt"
bool(false)
bool(false)
bool(false)
string(15) "meuarquivo2.txt"
bool(false)
bool(false)
bool(false)
string(14) "meuarquivo.txt"
int(4096)
bool(false)
bool(true)
string(15) "meuarquivo2.txt"
int(4096)
bool(false)
bool(true)

Veja Também

adicione uma nota

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

up
3
alex at phpguide dot co dot il
14 years ago
Compressing the entire archive
$phar->compress();
overrides your stub file.

Use compressFiles to have the the files compressed keeping your own stub in tact (which is not being compressed).
The compression is a little bit worth (since one file is left uncompressed), but enables you to have your own stub file executed with browser requests.

Don't get confused, compressing doesn't rise the security level of your code or obfuscating it strongly enough. The source code of your compressed phar is still easy to read.
To Top