Расширение php zip, ZipArchive не работает с пространствами имен - PullRequest
0 голосов
/ 11 февраля 2012

Пример кода:

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» все работает нормально.

Буду благодарен за любые идеи.

Ответы [ 2 ]

7 голосов
/ 11 февраля 2012

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

namespace myns;

$zip = new \ZipArchive;

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

0 голосов
/ 10 июня 2019

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

sudo apt install php-zip

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

$zip = new ZipArchive();

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

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

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

Для звонка:

\ZipSpace\zip()
...