PharData::decompressFiles

現在の zip アーカイブ内のすべてのファイルの圧縮を解除する

説明

public bool PharData::decompressFiles()

注意:

このメソッドは、php.iniphar.readonly0 でないと Phar オブジェクトで動作しません。それ以外の場合は PharException がスローされます。

tar 形式の phar アーカイブでは、このメソッドは BadMethodCallException をスローします。 というのも、tar ファイルフォーマットではアーカイブ内の個別のファイルの圧縮をサポートしていないからです。 PharData::compress を使用して、tar 形式の phar アーカイブ全体を圧縮します。

zip 形式のアーカイブでは、 このメソッドはアーカイブ内のすべてのファイルの圧縮を解除します。 もし bzip2/zlib で圧縮されているファイルがある場合は、 この機能を使用するには、zlib 拡張モジュールあるいは bzip2 拡張モジュールが有効になっている必要があります。

パラメータ

この関数にはパラメータはありません。

戻り値

成功した場合に true を、失敗した場合に false を返します。

エラー / 例外

zlib 拡張モジュールが有効でない場合、 あるいは既に bzip2 圧縮されているファイルがあるのに bzip2 拡張モジュールが有効でない場合に BadMethodCallException をスローします。

例1 PharData::decompressFiles の例

<?php
$p = new PharData('/path/to/my.zip');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
$p->compressFiles(Phar::GZ);
foreach ($p as $file) {
    var_dump($file->getFileName());
    var_dump($file->isCompressed());
    var_dump($file->isCompressed(Phar::BZ2));
    var_dump($file->isCompressed(Phar::GZ));
}
$p->decompressFiles();
foreach ($p as $file) {
    var_dump($file->getFileName());
    var_dump($file->isCompressed());
    var_dump($file->isCompressed(Phar::BZ2));
    var_dump($file->isCompressed(Phar::GZ));
}
?>

上の例の出力は以下となります。

string(10) "myfile.txt"
int(4096)
bool(false)
bool(true)
string(11) "myfile2.txt"
int(4096)
bool(false)
bool(true)
string(10) "myfile.txt"
bool(false)
bool(false)
bool(false)
string(11) "myfile2.txt"
bool(false)
bool(false)
bool(false)

参考

  • PharFileInfo::getCompressedSize
  • PharFileInfo::isCompressed
  • PharFileInfo::compress
  • PharFileInfo::decompress
  • Phar::canCompress
  • Phar::isCompressed
  • PharData::compressFiles
  • Phar::getSupportedCompression
  • PharData::compress
  • PharData::decompress