PHP 8.5.0 Alpha 1 available for testing

PharData::compress

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

PharData::compressComprime el archivo tar/zip completo utilizando la compresión Gzip o Bzip2

Descripción

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

Para los archivos tar, este método comprime el archivo completo utilizando la compresión gzip o bzip2. El archivo resultante puede ser manipulado con el comando gunzip/bunzip, o ser accedido directamente y de forma transparente con la extensión Phar.

Para los archivos zip, este método falla al lanzar una excepción. La extensión zlib debe estar activada para comprimir con gzip, la extensión bzip2 debe estar activada para comprimir con bzip2.

Asimismo, este método renombra automáticamente el archivo, añadiendo el sufijo .gz, .bz2 o eliminando la extensión si Phar::NONE es especificado para eliminar la compresión. De lo contrario, una extensión de archivo puede ser especificada con el segundo argumento.

Parámetros

compression

La compresión debe ser Phar::GZ o Phar::BZ2 para aplicar una compresión, o Phar::NONE para eliminarla.

extension

Por omisión, la extensión es .tar.gz o .tar.bz2 para comprimir un tar, y .tar para descomprimir.

Valores devueltos

Un objeto PharData es devuelto en caso de éxito, null en caso de error.

Errores/Excepciones

Levanta una excepción BadMethodCallException 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 PharData::compress()

<?php
$p
= new PharData('/ruta/al/mio.tar');
$p['monfichier.txt'] = 'salut';
$p['monfichier2.txt'] = 'salut';
$p1 = $p->compress(Phar::GZ); // copies hacia /path/to/my.tar.gz
$p2 = $p->compress(Phar::BZ2); // copies hacia /path/to/my.tar.bz2
$p3 = $p2->compress(Phar::NONE); // excepción: /path/to/my.tar ya existe
?>

Ver también

  • Phar::compress() - Comprime el archivo Phar completo utilizando la compresión Gzip o Bzip2

add a note

User Contributed Notes 2 notes

up
6
Christopher Marshall
9 years ago
This is a very irritating bug. You can use this to get around it though:

$data = 'some.test.string';
$phar = new PharData('test.tar');

$phar->compress(Phar::GZ, substr($data, strpos($data, '.') + 1));
up
2
c6h1206free at gmail dot com
9 years ago
This method destroys everything after the first dot in your filename and replaces it with the zip extension (.tar.gz, etc)

Example:

<?php

$tarfile
= "2.5.0.0-RC1.tar";
$pd = new \PharData($tarfile);
$pd->buildFromDirectory("/path/to/contents");
$pd->compress(\Phar::GZ);

?>

Ends up with a file named "2.tar.gz"
To Top