PharData::decompress

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

PharData::decompress解压缩整个 Phar 归档文件

说明

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

对于基于 tar 的归档文件,此方法会解压缩整个归档文件。

对于基于 Zip 的归档文件,此方法会抛出一个异常。必须启用 zlib 扩展才能解压缩使用 gzip 压缩的归档文件,并且必须启用 bzip2 扩展才能解压缩使用 bzip2 压缩的归档文件。

此外,此方法会自动重命名归档文件的扩展名,默认情况下为 .tar。或者,可以使用 extension 参数指定一个文件扩展名。

参数

extension

对于解压缩,默认文件扩展名为 .tar。使用此参数指定其他文件扩展名。请注意,只有可执行归档文件才能在其文件名中包含 .phar

返回值

成功时返回 PharData 对象,失败时返回 null

错误/异常

如果 zlib 扩展不可用或 bzip2 扩展未启用,则会抛出 BadMethodCallException

变更日志

版本 说明
8.0.0 extension 现在可为空。

示例

示例 #1 一个 PharData::decompress() 示例

<?php
$p
= new PharData('/path/to/my.tar.gz');
$p->decompress(); // 创建 /path/to/my.tar
?>

参见

添加注释

用户贡献的注释 1 个注释

pttlens at gmail dot com
5 年前
如果文件名包含多个点 (.),您可以通过以下代码(示例 1)保留其他部分。

示例 #1 (预期)
<?php
$filename
= "abc.xyz.tar.gz";
$p = new PharData($filename);
$exts = explode('.', $filename);
array_shift($exts);
array_pop($exts);
$ext = implode('.', $exts);
$p->decompress($ext); # 结果文件名:abc.xyz.tar
?>

示例 #2 (可能不符合预期)
<?php
$filename
= "abc.xyz.tar.gz";
$p = new PharData($filename);
$p->decompress($filename); # 结果文件名:abc.tar;xyz 被意外截断。
?>
To Top