PharData::compress

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

PharData::compress使用 Gzip 或 Bzip2 压缩压缩整个 tar/zip 存档

描述

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

对于 tar 存档,此方法使用 gzip 压缩或 bzip2 压缩压缩整个存档。生成的 文件可以使用 gunzip 命令/bunzip 命令进行处理,或使用 Phar 扩展直接透明地访问。

对于 zip 存档,此方法将引发异常。必须启用 zlib 扩展才能使用 gzip 压缩进行压缩,必须启用 bzip2 扩展才能使用 bzip2 压缩进行压缩。

此外,此方法会自动重命名存档,追加 .gz.bz2 或如果传递 Phar::NONE 来删除压缩,则删除扩展名。或者,可以使用第二个参数指定文件扩展名。

参数

compression

压缩必须是 Phar::GZPhar::BZ2 之一以添加压缩,或 Phar::NONE 以删除压缩。

extension

默认情况下,扩展名是 .tar.gz.tar.bz2(用于压缩 tar),以及 .tar(用于解压缩)。

返回值

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

错误/异常

如果 zlib 扩展不可用,或者 bzip2 扩展未启用,则引发 BadMethodCallException

变更日志

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

示例

示例 #1 PharData::compress() 示例

<?php
$p
= new PharData('/path/to/my.tar');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
$p1 = $p->compress(Phar::GZ); // 复制到 /path/to/my.tar.gz
$p2 = $p->compress(Phar::BZ2); // 复制到 /path/to/my.tar.bz2
$p3 = $p2->compress(Phar::NONE); // 异常:/path/to/my.tar 已经存在
?>

参见

添加注释

用户贡献的注释 2 个注释

6
Christopher Marshall
8 年前
这是一个非常令人恼火的错误。您可以使用以下方法解决它

$data = 'some.test.string';
$phar = new PharData('test.tar');

$phar->compress(Phar::GZ, substr($data, strpos($data, '.') + 1));
2
c6h1206free at gmail dot com
8 年前
此方法会破坏您文件名中第一个点后的所有内容,并将其替换为 zip 扩展名(.tar.gz 等)

示例

<?php

$tarfile
= "2.5.0.0-RC1.tar";
$pd = new \PharData($tarfile);
$pd->buildFromDirectory("/path/to/contents");
$pd->compress(\Phar::GZ);

?>

最终会生成一个名为 "2.tar.gz" 的文件
To Top