PharData::compress

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

PharData::compress β€” Π‘ΠΆΠΈΠΌΠ°Π΅Ρ‚ вСсь Π°Ρ€Ρ…ΠΈΠ² tar/zip, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ сТатиС Gzip ΠΈΠ»ΠΈ Bzip2

ОписаниС

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

Для tar-Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ², этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Ρ‘Ρ‚ сТатиС всСго Π°Ρ€Ρ…ΠΈΠ²Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ gzip ΠΈΠ»ΠΈ bzip2. Π Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄ gunzip ΠΈΠ»ΠΈ bunzip, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Phar.

Для zip-Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ² этот ΠΌΠ΅Ρ‚ΠΎΠ΄ выбросит ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Для gzip-сТатия Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ доступСн ΠΌΠΎΠ΄ΡƒΠ»ΡŒ zlib. Для bzip2-сТатия Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ доступСн ΠΌΠΎΠ΄ΡƒΠ»ΡŒ bzip2.

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Π°Ρ€Ρ…ΠΈΠ², добавляя ΠΊ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ .gz, .bz2 ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΡƒΠ±ΠΈΡ€Π°ΡŽΡ‰Π΅Π΅ Π΅Π³ΠΎ, Ссли ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΈΠΏΠ° сТатия Π·Π°Π΄Π°Π½ ΠΊΠ°ΠΊ Phar::NONE. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ„Π°ΠΉΠ».

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

compression

Одна ΠΈΠ· констант: Phar::GZ, Phar::BZ2, ΠΈΠ»ΠΈ Phar::NONE для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ компрСссии.

extension

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ„Π°ΠΉΠ»Ρƒ назначится Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ .tar.gz ΠΈΠ»ΠΈ .tar.bz2 для сТатия ΠΈ .tar, Ссли сТатиС ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ PharData Π² случаС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ выполнСния ΠΈΠ»ΠΈ null Π² случаС возникновСния ошибки.

Ошибки

ВыбрасываСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ BadMethodCallException, Ссли нСдоступСн ΠΌΠΎΠ΄ΡƒΠ»ΡŒ zlib ΠΈΠ»ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ bzip2.

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

ВСрсия ОписаниС
8.0.0 extension Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ допускаСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования PharData::compress()

<?php
$p
= new PharData('/path/to/my.tar');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
$p1 = $p->compress(Phar::GZ); // copies to /path/to/my.tar.gz
$p2 = $p->compress(Phar::BZ2); // copies to /path/to/my.tar.bz2
$p3 = $p2->compress(Phar::NONE); // exception: /path/to/my.tar already exists
?>

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

  • Phar::compress() - Π‘ΠΆΠΈΠΌΠ°Π΅Ρ‚ вСсь Phar-Π°Ρ€Ρ…ΠΈΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Gzip- ΠΈΠ»ΠΈ Bzip2-сТатия
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

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

up
6
Christopher Marshall ΒΆ
10 years ago
This is a very irritating bug. You can use this to get around it though:

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

$phar->compress(Phar::GZ, substr($data, strpos($data, '.') + 1));
up
2
c6h1206free at gmail dot com ΒΆ
10 years ago
This method destroys everything after the first dot in your filename and replaces it with the zip extension (.tar.gz, etc)

Example:

<?php

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

?>

Ends up with a file named "2.tar.gz"