(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)
PharData::convertToData — 將 phar 封存轉換為不可執行的 tar 或 zip 檔案
$format
= null
, ?int $compression
= null
, ?string $extension
= null
): ?PharData此方法用於將非可執行的 tar 或 zip 封存檔轉換為另一種非可執行的格式。
如果未指定任何更改,此方法會擲出 BadMethodCallException 例外。此方法應用於將 tar 封存檔轉換為 zip 格式,反之亦然。雖然可以使用此方法簡單地更改 tar 封存檔的壓縮方式,但為了邏輯一致性,最好使用 PharData::compress() 方法。
如果成功,該方法會在磁碟上建立新的封存檔,並返回一個 PharData 物件。舊的封存檔不會從磁碟中移除,應該在程序完成後手動刪除。
format
這應該是 Phar::TAR
或 Phar::ZIP
之一。如果設定為 null
,則會保留現有的檔案格式。
compression
這應該是 Phar::NONE
表示不進行全封存壓縮,Phar::GZ
表示基於 zlib 的壓縮,以及 Phar::BZ2
表示基於 bzip 的壓縮。
extension
此參數用於覆寫已轉換封存檔的預設檔案副檔名。請注意,非可執行的 tar 或 zip 封存檔的檔名中不能使用 .phar
。
如果轉換為基於 tar 的 phar 封存檔,則預設副檔名為 .tar
、.tar.gz
和 .tar.bz2
,具體取決於指定的壓縮方式。對於基於 zip 的封存檔,預設副檔名是 .zip
。
當無法壓縮、指定了未知的壓縮方法、請求的封存檔正在使用 Phar::startBuffering() 進行緩衝但尚未使用 Phar::stopBuffering() 結束時,此方法會擲出 BadMethodCallException 例外;如果在 phar 建立過程中遇到任何問題,則會擲出 PharException 例外。
版本 | 說明 |
---|---|
8.0.0 |
format 、compression 和 extension 現在可以為 null。 |
範例 #1 一個 PharData::convertToData() 的範例
使用 PharData::convertToData()
<?php
try {
$tarphar = new PharData('myphar.tar');
// 注意 myphar.tar *不會* 被移除連結
// 將其轉換為不可執行的 tar 檔案格式
// 建立 myphar.zip
$zip = $tarphar->convertToData(Phar::ZIP);
// 建立 myphar.tbz
$tgz = $zip->convertToData(Phar::TAR, Phar::BZ2, '.tbz');
// 建立 myphar.phar.tgz
$phar = $tarphar->convertToData(Phar::PHAR); // 拋出例外
} catch (Exception $e) {
// 在此處處理錯誤
}
?>