CakeFest 2024: The Official CakePHP Conference

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

Замечание:

Для корректной работы с объектами Phar этому методу необходима установка значения php.ini phar.readonly в 0. В противном случае, будет выброшено исключение PharException.

В случае с phar-архивами, основанными на tar или phar, этот метод распаковывает весь архив.

В случае с phar-архивами, основанными на zip, вызов данного метода потерпит неудачу и будет брошено исключение. Для распаковки архива, сжатого по алгоритму gzip, должен быть включён модуль zlib; для распаковки архива, сжатого по алгоритму bzip2, должен быть включён модуль bzip2. Как и в случае с другим функционалом, модифицирующим содержание phar-архива, для успешной работы данного метода необходимо, чтобы INI-переменная phar.readonly была отключена.

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

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

extension

Расширениями распакованного файла по умолчанию являются .phar и .phar.tar. Этот параметр может быть использован для задания другого расширения распакованного файла. Имейте в виду, что все исполняемые phar-архивы должны содержать .phar в имени файла.

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

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

Ошибки

Выбрасывает исключение BadMethodCallException, если INI-переменная phar.readonly включена, модуль zlib не доступен или модуль bzip2 не включён.

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

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

Примеры

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

<?php
$p
= new Phar('/путь/к/my.phar', 0, 'my.phar.gz');
$p['myfile.txt'] = 'привет';
$p['myfile2.txt'] = 'привет';
$p3 = $p2->decompress(); // создаст /путь/к/my.phar
?>

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

add a note

User Contributed Notes 1 note

up
0
shevadas at gmail dot com
7 years ago
decompress() will truncate any part of the filename after the first period, as it assumes it's part of the extension. For example, if your PharData archive is named "views-3.x-3.13.tar.gz", calling decompress on it will create a tar file named "views-3.tar". See https://bugs.php.net/bug.php?id=58852
To Top