buildFromDirectory won't add empty subdirectories on 7.2(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)
PharData::buildFromDirectory β Π‘ΠΎΠ·Π΄Π°ΡΡ tar/zip-Π°ΡΡ ΠΈΠ² ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ² Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ
ΠΠ°ΠΏΠΎΠ»Π½ΡΠ΅Ρ tar/zip-Π°ΡΡ ΠΈΠ² ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ. ΠΡΠΎΡΠΎΠΉ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ (pcre). Π€Π°ΠΉΠ»Ρ, ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΠΏΠΎΠ΄ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π±ΡΠ΄ΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² Π°ΡΡ ΠΈΠ², Π° Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π½Π΅Ρ. ΠΡΠ»ΠΈ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π°ΡΡ ΠΈΠ²Π° Π½ΡΠΆΠ½Π° Π±ΠΎΠ»ΡΡΠ°Ρ ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ PharData::buildFromIterator().
directoryΠΠΎΠ»Π½ΡΠΉ ΠΈΠ»ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΡΡ Π΄ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ, ΡΠ°ΠΉΠ»Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π² Π°ΡΡ ΠΈΠ².
patternΠ Π΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ΅Π΅, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² Π°ΡΡ ΠΈΠ².
Phar::buildFromDirectory() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²,
ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ Π²Π½ΡΡΡΠΈ Π°ΡΡ
ΠΈΠ²Π° Ρ ΠΏΠΎΠ»Π½ΡΠΌ ΠΏΡΡΡΠΌ ΠΊ ΡΠ°ΠΉΠ»Ρ Π½Π° Π΄ΠΈΡΠΊΠ΅ ΠΈΠ»ΠΈ false, Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°.
ΠΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ BadMethodCallException, Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠ΄Π°ΡΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ PharException Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ°Ρ Π·Π°ΠΏΠΈΡΠΈ Π½Π° Π΄ΠΈΡΠΊ.
| ΠΠ΅ΡΡΠΈΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|
| 8.1.0 |
PharData::buildFromDirectory() Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ false.
|
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ PharData::buildFromDirectory()
<?php
$phar = new PharData('project.tar');
// Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΏΡΠΎΠ΅ΠΊΡ
$phar->buildFromDirectory(dirname(__FILE__) . '/project');
$phar2 = new PharData('project2.zip');
// Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² ΠΏΡΠΎΠ΅ΠΊΡ ΡΠΎΠ»ΡΠΊΠΎ .php ΡΠ°ΠΉΠ»Ρ
$phar2->buildFromDirectory(dirname(__FILE__) . '/project', '/\.php$/');
?>