# Phar::compress

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

Phar::compress — Comprimir el archivo Phar entero usando la compresión Gzip o Bzip2

### Descripción

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

> Nota:

> Este método requiere que la opción de php.ini `phar.readonly` esté establecida a `0` para que trabaje con objetos Phar. De otra manera, se lanzará una excepción de tipo PharException.

Para archivos phar basados en tar y en phar, este método comprime el archivo entero usando la compresión gzip o bzip2. El fichero resultante puede ser procesado con el comando gunzip/bunzip, o se puede acceder a él directa y transparentemente con la extensión Phar.

Para archivos phar basados en Zip, este método falla con el lanzamiento de una excepción. La extensión zlib debe estar habilitada para poder comprimir con la compresión gzip, y la extensión bzip2 debe estar habilitada para poder comprimir con la compresión bzip2. Al igual que con toda la funcionalidad que modifica el contenido de un Phar, la variable INI phar.readonly debe estar desactivada para poder realizar esto.

Además, este método renombra automáticamente el archivo, añadiéndole `.gz`, `.bz2` o eliminado la extensión si se pasa `Phar::NONE` para eliminar la compresión. De forma alternativa, se puede expecificar una extensión de fichero con el segundo parámetro.

### Parámetros

`compression`

  La compresión debe ser `Phar::GZ` o `Phar::BZ2` para añadir compresión, o `Phar::NONE` para eliminarla.

`extension`

  Por omisión, la extensión es `.phar.gz` o `.phar.bz2` para comprimir archivos phar, y `.phar.tar.gz` o `.phar.tar.bz2` para comprimir archivos tar. Para la descompresión, las extensiones de fichero predeterminadas son `.phar` y `.phar.tar`.

### Valores devueltos

Devuelve un objeto de la clase Phar.

### Errores/Excepciones

Lanza una excepción de tipo BadMethodCallException si la variable INI phar.readonly está activada, la extensión zlib no está disponible, o la extensión bzip2 no está habilitada.

### Ejemplos

Ejemplo #1 Un ejemplo de Phar::compress()

`<?php
$p = new Phar('/ruta/a/mi.phar', 0, 'mi.phar');
$p['mifichero1.txt'] = 'hola';
$p['mifichero12.txt'] = 'hola';
$p1 = $p->compress(Phar::GZ); // copia a /ruta/a/mi.phar.gz
$p2 = $p->compress(Phar::BZ2); // copia a /ruta/a/mi.phar.bz2
$p3 = $p2->compress(Phar::NONE); // excepción: /ruta/a/mi.phar ya existe
?>`

### Ver también

- PharFileInfo::getCompressedSize() - Devolver el tamaño real de un fichero (con compresión) dentro de un archivo Phar
- PharFileInfo::isCompressed() - Devolver si la entrada está comprimida
- PharFileInfo::compress() - Comprimir la entrada del Phar actual con la compresión zlib o bzip2
- PharFileInfo::decompress() - Descomprimir la entrada Phar actual dentro del phar
- PharData::compress() - Comprimir el archivo tar/zip entero usando la compresión Gzip o Bzip2
- Phar::canCompress() - Devuelve si la extensión phar soporta la compresión usando zlib o bzip2
- Phar::isCompressed() - Devuelve Phar::GZ oPHAR::BZ2 si el archivo phar entero está comprimido (.tar.gz/tar.bz, etc.)
- Phar::decompress() - Descomprimir un archivo Phar entero
- Phar::getSupportedCompression() - Devolver un array de los algoritmos de compresión soportados
- Phar::compressFiles() - Comprime todos los ficheros del archivo Phar actual
- Phar::decompressFiles() - Descomprimir todos los ficheros del archivo Phar actual