PharData::compress

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

PharData::compress — Compresse l'archive tar/zip complùte en utilisant la compression Gzip ou Bzip2

Description

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

Pour les archives tar, cette mĂ©thode compresse l'archive entiĂšre en utilisant la compression gzip ou bzip2. Le fichier qui en rĂ©sulte peut ĂȘtre manipulĂ© avec la commande gunzip/bunzip, ou ĂȘtre accĂ©dĂ© directement et de façon transparente avec l'extension Phar.

Pour les archives zip, cette mĂ©thode Ă©choue en levant une exception. L'extension zlib doit ĂȘtre activĂ©e pour compresser avec gzip, l'extension bzip2 doit ĂȘtre activĂ©e pour compresser avec bzip2.

De plus, cette mĂ©thode renomme automatiquement l'archive, en la suffixant par .gz, .bz2 ou en enlevant l'extension si Phar::NONE est spĂ©cifiĂ© pour enlever la compression. Sinon, une extension de fichier peut ĂȘtre spĂ©cifiĂ©e avec le second paramĂštre.

Liste de paramĂštres

compression

La compression doit ĂȘtre Phar::GZ ou Phar::BZ2 pour appliquer une compression, ou Phar::NONE pour l'enlever.

extension

Par défaut, l'extension est .tar.gz ou .tar.bz2 pour compresser un tar, et .tar pour décompresser.

Valeurs de retour

Un objet PharData est retourné en cas de succÚs, null en cas d'échec.

Erreurs / Exceptions

SoulÚve une exception BadMethodCallException si l'extension zlib n'est pas disponible, ou si l'extension bzip2 n'est pas activée.

Historique

Version Description
8.0.0 extension est désormais nullable.

Exemples

Exemple #1 Un exemple avec PharData::compress()

<?php
$p
= new PharData('/chemin/vers/mon.tar');
$p['monfichier.txt'] = 'salut';
$p['monfichier2.txt'] = 'salut';
$p1 = $p->compress(Phar::GZ); // copie vers /chemin/vers/mon.tar.gz
$p2 = $p->compress(Phar::BZ2); // copie vers /chemin/vers/mon.tar.bz2
$p3 = $p2->compress(Phar::NONE); // exception : /chemin/vers/mon.tar existe déjà
?>

Voir aussi

  • Phar::compress() - Compresse l'archive Phar complĂšte en utilisant la compression Gzip ou Bzip2
add a note

User Contributed Notes 2 notes

up
6
Christopher Marshall ¶
10 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 ¶
10 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"