PHP Conference Japan 2024

PharData::decompress

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

PharData::decompress解壓縮整個 Phar 封存檔

說明

public PharData::decompress(?string $extension = null): ?PharData

對於基於 tar 的封存檔,此方法會解壓縮整個封存檔。

對於基於 Zip 的封存檔,此方法會因例外狀況而失敗。必須啟用 zlib 擴充套件才能解壓縮使用 gzip 壓縮的封存檔,並且必須啟用 bzip2 擴充套件才能解壓縮使用 bzip2 壓縮的封存檔。

此外,這個方法會自動重新命名壓縮檔的副檔名,預設為 .tar。或者,可以使用 extension 參數指定副檔名。

參數

extension

對於解壓縮,預設的副檔名是 .tar。使用此參數可以指定其他副檔名。請注意,只有可執行壓縮檔的檔名中可以包含 .phar

回傳值

成功時會返回一個 PharData 物件,失敗時則返回 null

錯誤/例外

如果 zlib 擴充套件不可用,或 bzip2 擴充套件未啟用,則會拋出 BadMethodCallException

更新日誌

版本 說明
8.0.0 extension 現在可以為 null。

範例

範例 #1 PharData::decompress() 範例

<?php
$p
= new PharData('/path/to/my.tar.gz');
$p->decompress(); // 建立 /path/to/my.tar
?>

參見

新增註釋

使用者貢獻的註釋 1 則註釋

pttlens at gmail dot com
6 年前
如果檔名包含多個點(.),您可以使用以下程式碼保留其他部分(範例 1)。

範例 #1(預期)
<?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); # 結果檔案名稱:abc.xyz.tar
?>

範例 #2(可能與預期不符)
<?php
$filename
= "abc.xyz.tar.gz";
$p = new PharData($filename);
$p->decompress($filename); # 結果檔案名稱:abc.tar;xyz 被意外截斷。
?>
To Top