(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)
PharData::compressFiles β Π‘ΠΆΠ°ΡΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ tar/zip-Π°ΡΡ ΠΈΠ²Π΅
ΠΠ»Ρ tar-Π°ΡΡ ΠΈΠ²ΠΎΠ² Π΄Π°Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ±ΡΠΎΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ BadMethodCallException, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΆΠ°ΡΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π² tar-Π°ΡΡ ΠΈΠ²Π΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ ΡΠ°ΠΉΠ»Π°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ PharData::compress() Π΄Π»Ρ ΡΠΆΠ°ΡΠΈΡ Π²ΡΠ΅Π³ΠΎ tar-Π°ΡΡ ΠΈΠ²Π°.
ΠΠ»Ρ Zip-Π°ΡΡ ΠΈΠ²ΠΎΠ² ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΎΠΆΠΌΡΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΡΠΈΠΏ ΡΠΆΠ°ΡΠΈΡ. ΠΠ»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅Π±ΡΡΡΡΡ Π²ΠΊΠ»ΡΡΡΠ½Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ zlib ΠΈΠ»ΠΈ bzip2, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° ΡΠΆΠ°ΡΠΈΡ. Π’Π°ΠΊΠΆΠ΅, Π΅ΡΠ»ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠΆΠ΅ Π±ΡΠ»ΠΈ ΡΠΆΠ°ΡΡ, ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π±ΡΠ» Π²ΠΊΠ»ΡΡΡΠ½, ΠΈΠ½Π°ΡΠ΅ Π½Π΅ ΡΠ΄Π°ΡΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ.
compression
ΠΠ΄Π½Π° ΠΈΠ· ΠΊΠΎΠ½ΡΡΠ°Π½Ρ: Phar::GZ,
Phar::BZ2 ΠΈΠ»ΠΈ Phar::NONE, Π΄Π»Ρ ΠΎΡΠΌΠ΅Π½Ρ ΡΠΆΠ°ΡΠΈΡ.
Π€ΡΠ½ΠΊΡΠΈΡ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ BadMethodCallException Π΅ΡΠ»ΠΈ Π²ΡΠΊΠ»ΡΡΠ΅Π½Π° INI-ΠΎΠΏΡΠΈΡ phar.readonly, Π΅ΡΠ»ΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ zlib ΠΈΠ»ΠΈ bzip2.
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ PharData::compressFiles()
<?php
$p = new Phar('/path/to/my.phar', 0, 'my.phar');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
foreach ($p as $file) {
var_dump($file->getFileName());
var_dump($file->isCompressed());
var_dump($file->isCompressed(Phar::BZ2));
var_dump($file->isCompressed(Phar::GZ));
}
$p->compressFiles(Phar::GZ);
foreach ($p as $file) {
var_dump($file->getFileName());
var_dump($file->isCompressed());
var_dump($file->isCompressed(Phar::BZ2));
var_dump($file->isCompressed(Phar::GZ));
}
?>Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
string(10) "myfile.txt" bool(false) bool(false) bool(false) string(11) "myfile2.txt" bool(false) bool(false) bool(false) string(10) "myfile.txt" int(4096) bool(false) bool(true) string(11) "myfile2.txt" int(4096) bool(false) bool(true)