Phar::compress

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

Phar::compressComprime el archivo Phar completo utilizando la compresión Gzip o Bzip2

Descripción

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

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.

En el caso de los archivos phar basados en tar o en phar, este método comprime el archivo completo utilizando la compresión gzip o bzip2. El archivo resultante puede ser procesado con el comando gzip/bzip2, o accedido directamente y de forma transparente con la extensión Phar.

En el caso de los archivos phar basados en Zip, este método falla lanzando una excepción. La extensión zlib debe estar activada para comprimir con gzip, mientras que la extensión bzip2 debe estar activada para comprimir con bzip2. Al igual que con todas las funcionalidades que modifican el contenido de un phar, la variable INI phar.readonly debe estar a off para funcionar.

Además, este método renombra automáticamente el archivo, añadiendo a su nombre .gz, .bz2 o eliminando la extensión si Phar::NONE es pasado para eliminar la compresión. De lo contrario, una extensión de archivo puede también ser especificada utilizando el segundo parámetro.

Parámetros

compression

La compresión debe ser Phar::GZ, Phar::BZ2 para beneficiarse de la compresión, o bien Phar::NONE para eliminar la compresión.

extension

Por omisión, la extensión es .phar.gz o .phar.bz2 para comprimir los archivos phar, y .phar.tar.gz o .phar.tar.bz2 para comprimir los archivos tar. Para descomprimir, las extensiones por omisión son .phar y .phar.tar.

Valores devueltos

Devuelve un objeto Phar, o null en caso de error.

Errores/Excepciones

Levanta una excepción BadMethodCallException si la variable INI phar.readonly está a on, si la extensión zlib no está disponible, o si la extensión bzip2 no está activada.

Historial de cambios

Versión Descripción
8.0.0 extension ahora es nullable.

Ejemplos

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

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

Ver también