(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)
PharData::copy — 將 tar/zip 封存檔內的檔案複製到同一封存檔內的另一個新檔案
將 tar/zip 封存檔內部的檔案複製到同一個封存檔中的另一個新檔案。這是使用 copy() 搭配 phar 串流包裝器的物件導向替代方案。
來源 (from)
目標 (to)
永遠傳回 true
。
如果來源檔案不存在、目標檔案已存在、寫入權限被停用、開啟任一檔案失敗、讀取來源檔案失敗,則會拋出 UnexpectedValueException 例外;如果將變更寫入 phar 檔案失敗,則會拋出 PharException 例外。
範例 #1 PharData::copy() 範例
此範例顯示使用 PharData::copy() 和使用等效串流包裝器來執行相同操作的效能比較。兩種方法的主要差異在於錯誤處理。所有 PharData 方法都會拋出例外,而串流包裝器則使用 trigger_error()。
<?php
try {
$phar = new PharData('myphar.tar');
$phar['a'] = 'hi';
$phar->copy('a', 'b');
echo $phar['b']; // 輸出 "phar://myphar.tar/b"
} catch (Exception $e) {
// 處理錯誤
}
// 以上程式碼的等效串流包裝器版本。
// 發生錯誤時會觸發 E_WARNING 而不是例外
copy('phar://myphar.tar/a', 'phar//myphar.tar/c');
echo file_get_contents('phar://myphar.tar/c'); // 輸出 "hi"
?>