Phar::compressFiles
(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)
Phar::compressFiles — Comprime todos los ficheros del archivo Phar actual
Descripción
public Phar::compressFiles(
int $compression
):
void
Nota:
Este
método requiere que la opción de php.ini phar.readonly
esté establecida
a 0
para que trabaje con objetos Phar.
De otra manera, se lanzará una excepción de tipo PharException.
Para archivos phar basados en tar, este método lanza una
excepción de tipo BadMethodCallException, ya que la compresión de ficheros
individuales dentro de un archivo tar no está soportada por el formato de fichero. Use
Phar::compress() para comprimir un archivo phar entero basado en tar.
Para achivos phar basados en Zip y phar, este método comprime todos los ficheros del
archivo Phar usando la compresión especificada.
Las extensiones zlib o bzip2
deben estar habilitadas para aprovechar esta característica. Además, si cualquier fichero
ya está comprimido con la compresión bzip2/zlib, la extensión respectiva debe estar
habilitada para poder descomprimir los ficheros antes de re-comprimirlos.
Al igual que con toda la funcionalidad que modifica el contenido de un Phar, la
variable INI phar.readonly debe estar desactivada
para poder realizar esto.
Parámetros
-
compression
-
La compresión debe ser Phar::GZ
o
Phar::BZ2
para añadir compresión, o Phar::NONE
para eliminarla.
Valores devueltos
No devuelve ningún valor.
Errores/Excepciones
Lanza una excepción de tipo BadMethodCallException si
la variable INI phar.readonly
está activada, la extensión zlib
no está disponible, o si cualquier fichero está comprimido con
la compresión bzip2 y la extensión bzip2
no está habilitada.
Ejemplos
Ejemplo #1 Un ejemplo de Phar::compressFiles()
<?php
$p = new Phar('/ruta/a/mi.phar', 0, 'mi.phar');
$p['mifichero.txt'] = 'hola';
$p['mifichero2.txt'] = 'hola';
foreach ($p as $fichero) {
var_dump($fichero->getFileName());
var_dump($fichero->isCompressed());
var_dump($fichero->isCompressed(Phar::BZ2));
var_dump($fichero->isCompressed(Phar::GZ));
}
$p->compressFiles(Phar::GZ);
foreach ($p as $fichero) {
var_dump($fichero->getFileName());
var_dump($fichero->isCompressed());
var_dump($fichero->isCompressed(Phar::BZ2));
var_dump($fichero->isCompressed(Phar::GZ));
}
?>
El resultado del ejemplo sería:
string(13) "mifichero.txt"
bool(false)
bool(false)
bool(false)
string(14) "mifichero2.txt"
bool(false)
bool(false)
bool(false)
string(13) "mifichero.txt"
int(4096)
bool(false)
bool(true)
string(14) "mifichero2.txt"
int(4096)
bool(false)
bool(true)