CakeFest 2024: The Official CakePHP Conference

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 этот метод выбросит исключение. Для разжатия gzip-архивов должен быть включён модуль zlib, а для bzip2, соответственно, модуль bzip2.

Также этот метод автоматически меняет расширение файла, по умолчанию .tar. Расширение можно указать явно с помощью параметра extension.

Список параметров

extension

По умолчанию при распаковке файлу меняется расширение на .tar. С помощью этого параметра можно явно указать новое расширение. Будьте осторожны, только запускаемые архивы могут содержать .phar в своих именах.

Возвращаемые значения

Возвращает объект типа PharData в случае успешного выполнения и null в случае возникновения ошибки.

Ошибки

Выбрасывает исключение BadMethodCallException, если отсутствует модуль, необходимый для распаковки: zlib или bzip2.

Список изменений

Версия Описание
8.0.0 extension теперь допускает значение null.

Примеры

Пример #1 Пример использования PharData::decompress()

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

Смотрите также

add a note

User Contributed Notes 1 note

up
6
pttlens at gmail dot com
5 years ago
If filename contains multiple dots(.), you can preserve other parts by following code (example1).

Example #1 (Expected)
<?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); # result filename: abc.xyz.tar
?>

Example #2 (might be unexpected)
<?php
$filename
= "abc.xyz.tar.gz";
$p = new PharData($filename);
$p->decompress($filename); # result filename: abc.tar; xyz is truncated accidentally.
?>
To Top