PHP Conference Japan 2024

Phar::decompress

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

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

描述

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

注意:

此方法需要 php.ini 设置 phar.readonly0 才能对 Phar 对象起作用。否则,将抛出 PharException 异常。

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

对于基于 Zip 的 phar 归档文件,此方法会抛出异常而失败。必须启用 zlib 扩展才能解压使用 gzip 压缩的归档文件,并且必须启用 bzip2 扩展才能解压使用 bzip2 压缩的归档文件。与所有修改 phar 内容的功能一样,为了成功,phar.readonly INI 变量必须关闭。

此外,此方法会自动更改归档文件的扩展名,phar 归档文件的默认扩展名为 .phar,基于 tar 的 phar 归档文件的扩展名为 .phar.tar。或者,可以使用第二个参数指定文件扩展名。

参数

extension

对于解压,默认的文件扩展名为 .phar.phar.tar。使用此参数指定其他文件扩展名。请注意,所有可执行的 phar 归档文件的文件名中都必须包含 .phar

返回值

成功时返回一个 Phar 对象,失败时返回 null

错误/异常

如果 phar.readonly INI 变量已启用,zlib 扩展不可用,或 bzip2 扩展未启用,则抛出 BadMethodCallException 异常。

变更日志

版本 描述
8.0.0 extension 现在可以为 null。

示例

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

<?php
$p
= new Phar('/path/to/my.phar', 0, 'my.phar.gz');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
$p3 = $p2->decompress(); // 创建 /path/to/my.phar
?>

参见

添加注释

用户贡献的注释 1 个注释

0
shevadas at gmail dot com
8 年前
decompress() 将截断文件名中第一个句点后的任何部分,因为它假设这是扩展名的一部分。例如,如果您的 PharData 归档文件名为“views-3.x-3.13.tar.gz”,则对其调用 decompress 将创建一个名为“views-3.tar”的 tar 文件。参见 https://bugs.php.net/bug.php?id=58852
To Top