PHP 8.5.0 Alpha 2 available for testing

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 variable de configuración INI phar.readonly esté definida a 0 para funcionar con los objetos Phar. De lo contrario, se lanzará una excepción 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

add a note

User Contributed Notes 1 note

up
2
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