(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
此参数用于覆盖转换后的归档文件的默认文件扩展名。请注意,.phar
不能用于不可执行的 tar 或 zip 归档文件的任何文件名中。
如果转换为基于 tar 的 phar 归档文件,则默认扩展名为 .tar
、.tar.gz
和 .tar.bz2
,具体取决于指定的压缩方式。对于基于 zip 的归档文件,默认扩展名为 .zip
。
当无法压缩、指定了未知压缩方法、请求的归档文件使用 Phar::startBuffering() 进行缓冲并且尚未使用 Phar::stopBuffering() 结束以及在 phar 创建过程中遇到任何问题时,此方法会抛出 BadMethodCallException 和 PharException。
版本 | 描述 |
---|---|
8.0.0 |
format 、compression 和 extension 现在可以为空。 |
示例 #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) {
// 在这里处理错误
}
?>