phpday 2025 - Call For Papers

PharData::decompress

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

PharData::decompressDescomprimir un archivo Phar entero

Descripción

PharData::decompress(string $extension = ?): object

Para archivos phar basados en tar, este método descomprime el archivo entero.

Para archivos phar basados en Zip, este método este método falla con el lanzamiento de una excepción. La extensión zlib debe estar habilitada para descomprimir un archivo comprimido con la compresión gzip, y la extensión bzip2 debe estar habilitada para descomprimir un archivo comprimido con la compresión bzip2.

Además, este método renombra automáticamente la extensión de fichero del archivo, .tar por omisión. De forma alternativa, se puede expecificar una extensión de fichero con el segundo parámetro.

Parámetros

extension

Para la descompresión, las extensión de fichero predeterminada es .phar.tar. Use este parámetro para especificar otra extensión de fichero. Observe que todos los archivos no ejecutables no pueden contener .phar en su nombre de fichero.

Valores devueltos

Devuelve un objeto de la clase PharData.

Errores/Excepciones

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

Ejemplos

Ejemplo #1 Un ejemplo de PharData::decompress()

<?php
$p
= new PharData('/ruta/a/mi.tar.gz');
$p->decompress(); // crea /ruta/a/mi.tar
?>

Ver también

add a note

User Contributed Notes 1 note

up
6
pttlens at gmail dot com
6 years ago
If filename contains multiple dots(.), you can preserve other parts by following code (example1).

Example #1 (Expected)
<?php
$filename
= "abc.xyz.tar.gz";
$p = new PharData($filename);
$exts = explode('.', $filename);
array_shift($exts);
array_pop($exts);
$ext = implode('.', $exts);
$p->decompress($ext); # result filename: abc.xyz.tar
?>

Example #2 (might be unexpected)
<?php
$filename
= "abc.xyz.tar.gz";
$p = new PharData($filename);
$p->decompress($filename); # result filename: abc.tar; xyz is truncated accidentally.
?>
To Top