PHP Conference Japan 2024

PharData::convertToData

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

PharData::convertToData将 Phar 归档文件转换为不可执行的 tar 或 zip 文件

描述

public PharData::convertToData(?int $format = null, ?int $compression = null, ?string $extension = null): ?PharData

此方法用于将不可执行的 tar 或 zip 归档文件转换为另一种不可执行的格式。

如果未指定任何更改,则此方法会抛出 BadMethodCallException。此方法应用于将 tar 归档文件转换为 zip 格式或反之亦然。尽管可以使用此方法简单地更改 tar 归档文件的压缩方式,但出于逻辑一致性,最好使用 PharData::compress() 方法。

如果成功,该方法会在磁盘上创建一个新的归档文件并返回一个 PharData 对象。旧归档文件不会从磁盘中删除,应在流程完成后手动删除。

参数

format

这应该是 Phar::TARPhar::ZIP 之一。如果设置为 null,则将保留现有的文件格式。

compression

这应该是 Phar::NONE(表示不进行整个归档文件的压缩)、Phar::GZ(表示基于 zlib 的压缩)和 Phar::BZ2(表示基于 bzip 的压缩)之一。

extension

此参数用于覆盖转换后的归档文件的默认文件扩展名。请注意,对于不可执行的 tar 或 zip 归档文件,文件名中不能使用 .phar

如果转换为基于 tar 的 phar 归档文件,则默认扩展名分别为 .tar.tar.gz.tar.bz2,具体取决于指定的压缩方式。对于基于 zip 的归档文件,默认扩展名是 .zip

返回值

如果成功,则该方法返回一个 PharData 对象,否则返回 null

错误/异常

当无法压缩、指定了未知的压缩方法、请求的归档文件正在使用 Phar::startBuffering() 进行缓冲且尚未使用 Phar::stopBuffering() 结束以及在 Phar 创建过程中遇到任何问题时,此方法会抛出 BadMethodCallExceptionPharException

变更日志

版本 描述
8.0.0 formatcompressionextension 现在可以为 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) {
// 在此处处理错误
}
?>

参见

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top