(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)
PharData::decompressFiles β Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅Ρ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ zip-Π°ΡΡ ΠΈΠ²Π΅
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠ»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ Phar ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄Π»Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ
phar.readonlyΠ² ΡΠ°ΠΉΠ»Π΅ php.ini Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅0, ΠΈΠ½Π°ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ±ΡΠΎΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ PharException.
ΠΡΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π² tar-Π°ΡΡ ΠΈΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ BadMethodCallException, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΆΠ°ΡΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π² tar-Π°ΡΡ ΠΈΠ²Π΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ ΡΠ°ΠΉΠ»Π°. ΠΠ»Ρ ΡΠΆΠ°ΡΠΈΡ tar-Π°ΡΡ ΠΈΠ²Π° ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ PharData::compress().
Π zip-Π°ΡΡ ΠΈΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅Ρ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ. ΠΠ»Ρ ΡΠΆΠ°ΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ bzip2 ΠΈΠ»ΠΈ zlib ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΎΡΠΌΠ°ΡΡ ΡΠΆΠ°ΡΠΈΡ, β bzip2 ΠΈΠ»ΠΈ zlib.
Π‘ΠΈΠ³Π½Π°ΡΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true.
ΠΠ΅ΡΠΎΠ΄ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ BadMethodCallException, Π΅ΡΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ zlib Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½, ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΉΠ» ΡΠΆΠ°Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ bzip2, Π° ΠΌΠΎΠ΄ΡΠ»Ρ bzip2 Π½Π΅ Π²ΠΊΠ»ΡΡΠΈΠ»ΠΈ.
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΡΠΈΠΌΠ΅Ρ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π²ΡΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎ Π² zip-Π°ΡΡ ΠΈΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ PharData::decompressFiles()
<?php
$p = new PharData('/path/to/my.zip');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
$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));
}
$p->decompressFiles();
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" int(4096) bool(false) bool(true) string(11) "myfile2.txt" int(4096) bool(false) bool(true) string(10) "myfile.txt" bool(false) bool(false) bool(false) string(11) "myfile2.txt" bool(false) bool(false) bool(false)