Расширение Php zip, ZipArchive не работает с пространствами имен

Образец кода:

namespace myns;

$zip = new ZipArchive;
$zip->open('/var/www/less/less_1.zip');

for ($i = 0; $i < $zip->numFiles; $i++) {
    echo $zip->getNameIndex($i);
}

Когда я пытаюсь создать пространство имен и использовать ZipArchive, у меня возникает ошибка:

PHP Fatal error:  Class 'myns\ZipArchive' not found 
in /var/www/less/test.php on line 4

Без пространства имен 'myns' все работает нормально.

Буду признателен за любые идеи.


person Marcin Rogacki    schedule 11.02.2012    source источник


Ответы (2)


Вам просто нужно получить к нему доступ, используя «глобальное» пространство имен:

namespace myns;

$zip = new \ZipArchive;

Подробнее см. в документации по пространствам имен.

person Juicy Scripter    schedule 11.02.2012

Если отсутствует в системе:

sudo apt install php-zip

Из глобального пространства в php:

$zip = new ZipArchive();

Из пространства имен (без скобок):

namespace ZipSpace;
function zip(){
   $zip = new \ZipArchive;
   // ....
}

Используйте \ везде в пространстве имен для обозначения глобального.

Звонить:

\ZipSpace\zip()
person NVRM    schedule 09.06.2019