PHP Conference Japan 2024

Phar::decompress

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

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

說明

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

注意:

這個方法需要將 php.ini 設定 phar.readonly 設為 0 才能作用於 Phar 物件。否則,將會拋出 PharException 例外。

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

對於基於 Zip 的 phar 封存檔,此方法會因例外狀況而失敗。要解壓縮使用 gzip 壓縮的封存檔,必須啟用 zlib 擴充套件;要解壓縮使用 bzip2 壓縮的封存檔,則必須啟用 bzip2 擴充套件。如同所有修改 phar 內容的功能一樣,要成功執行此方法,phar.readonly INI 變數必須關閉。

此外,此方法會自動更改封存檔的副檔名,phar 封存檔預設為 .phar,而基於 tar 的 phar 封存檔則為 .phar.tar。或者,可以使用第二個參數指定副檔名。

參數

extension

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

回傳值

成功時回傳 Phar 物件,失敗時回傳 null

錯誤/例外

如果 phar.readonly INI 變數開啟、zlib 擴充套件不可用或 bzip2 擴充套件未啟用,則會擲回 BadMethodCallException

更新日誌

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

範例

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

<?php
$p
= new Phar('/path/to/my.phar', 0, 'my.phar.gz');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
$p3 = $p2->decompress(); // 建立 /path/to/my.phar
?>

參見

新增註記

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

0
shevadas at gmail dot com
8 年前
decompress() 會截斷檔名中第一個句點之後的任何部分,因為它假設它是副檔名的一部分。例如,如果您的 PharData 封存命名為「views-3.x-3.13.tar.gz」,則對其呼叫 decompress 會建立一個名為「views-3.tar」的 tar 檔案。請參閱 https://bugs.php.net/bug.php?id=58852
To Top