PharData::decompress

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

PharData::decompress β€” Π Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ вСсь Phar-Π°Ρ€Ρ…ΠΈΠ²

ОписаниС

public function 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
?>

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

  • PharFileInfo::getCompressedSize() - ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ»ΠΎΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° дискС с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ сТатия
  • PharFileInfo::isCompressed() - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, сТат Π»ΠΈ Ρ„Π°ΠΉΠ»
  • PharFileInfo::compress() - Π‘ΠΆΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ zlib ΠΈΠ»ΠΈ bzip2
  • PharFileInfo::decompress() - РаспаковываСт Phar-Ρ„Π°ΠΉΠ» Π² phar-Π°Ρ€Ρ…ΠΈΠ²Π΅
  • PharData::compress() - Π‘ΠΆΠΈΠΌΠ°Π΅Ρ‚ вСсь Π°Ρ€Ρ…ΠΈΠ² tar/zip, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ сТатиС Gzip ΠΈΠ»ΠΈ Bzip2
  • Phar::canCompress() - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ phar сТатиС с использованиСм zlib ΠΈΠ»ΠΈ bzip2
  • Phar::isCompressed() - Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Phar::GZ ΠΈΠ»ΠΈ PHAR::BZ2, Ссли phar-Π°Ρ€Ρ…ΠΈΠ² сТат Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ (.tar.gz/tar.bz ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅)
  • PharData::compress() - Π‘ΠΆΠΈΠΌΠ°Π΅Ρ‚ вСсь Π°Ρ€Ρ…ΠΈΠ² tar/zip, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ сТатиС Gzip ΠΈΠ»ΠΈ Bzip2
  • Phar::getSupportedCompression() - Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сТатия
  • PharData::compressFiles() - Π‘ΠΆΠ°Ρ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ tar/zip-Π°Ρ€Ρ…ΠΈΠ²Π΅
  • PharData::decompressFiles() - РаспаковываСт всС Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ zip-Π°Ρ€Ρ…ΠΈΠ²Π΅
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 1 note

up
6
pttlens at gmail dot com ΒΆ
7 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.
?>