Phar::compress

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

Phar::compress — Compresse l'archive Phar complùte en utilisant la compression Gzip ou Bzip2

Description

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

Note: Cette méthode nécessite que la variable de configuration INI phar.readonly soit définie à 0 pour fonctionner avec les objets Phar. Sinon, une exception PharException sera lançée.

Dans le cas des archives phar basĂ©es sur tar ou sur phar, cette mĂ©thode compresse l'archive complĂšte en utilisant la compression gzip ou bzip2. Le fichier qui en rĂ©sulte peut ĂȘtre traitĂ© avec la commande gzip/bzip2, ou accĂ©dĂ© directement et de façon transparente avec l'extension Phar.

Dans le cas des archives phar basĂ©es sur Zip, cette mĂ©thode Ă©choue en lançant une exception. L'extension zlib doit ĂȘtre activĂ©e pour compresser avec gzip, tandis que l'extension bzip2 doit ĂȘtre activĂ©e pour compresser avec bzip2. Comme avec toutes les fonctionnalitĂ©s qui modifient le contenu d'un phar, la variable INI phar.readonly doit ĂȘtre Ă  off pour fonctionner.

En plus, cette mĂ©thode renomme automatiquement l'archive, en ajoutant Ă  son nom .gz, .bz2 ou en enlevant l'extension si Phar::NONE est passĂ©e pour supprimer la compression. Sinon, une extension de fichier peut aussi ĂȘtre spĂ©cifiĂ©e en utilisant le second paramĂštre.

Liste de paramĂštres

compression

La compression doit ĂȘtre soit Phar::GZ, soit Phar::BZ2 pour bĂ©nĂ©ficier de la compression, ou bien Phar::NONE pour Ă©liminer la compression.

extension

Par défaut, l'extension est .phar.gz ou .phar.bz2 pour compresser les archives phar, et .phar.tar.gz ou .phar.tar.bz2 pour compresser les archives tar. Pour décompresser, les extensions par défaut sont .phar et .phar.tar.

Valeurs de retour

Retourne un objet Phar, ou null en cas d'échec.

Erreurs / Exceptions

LÚve une exception BadMethodCallException si la variable INI phar.readonly est à on, 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 Phar::compress()

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

Voir aussi

add a note

User Contributed Notes 1 note

up
1
mike at eyesis dot ca ¶
15 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));
    }
}
?>