Перейти к содержимому

ZIP в PHP

ZIP-архивы — это файлы, сжатые с помощью алгоритма ZIP. Они часто используются для уменьшения размера файлов и упрощения их передачи по интернету или хранения на диске. ZIP-архив может содержать один или несколько файлов и обычно имеет расширение .zip.

Класс PHP ZipArchive

Устаревшие функции zip_* были помечены как устаревшие в PHP 7.4 и удалены в PHP 8.0. Современным PHP-приложениям следует использовать встроенный класс ZipArchive, который предоставляет надежный объектно-ориентированный интерфейс для создания, чтения и извлечения ZIP-архивов.

Ключевые методы включают:

  • open() – Открывает ZIP-архив для чтения или записи.
  • extractTo() – Извлекает все файлы или конкретные записи в указанную директорию.
  • close() – Закрывает дескриптор архива.
  • getStatusString() – Возвращает понятное сообщение о статусе для обработки ошибок.

Пример использования

Следующий пример демонстрирует, как использовать ZipArchive для извлечения содержимого ZIP-файла на диск, включая базовую обработку ошибок:

php
$zip = new ZipArchive();
$filename = 'example.zip';
$extractTo = './extracted_files';

if ($zip->open($filename) === true) {
    if (!is_dir($extractTo)) {
        mkdir($extractTo, 0755, true);
    }

    if ($zip->extractTo($extractTo) === true) {
        echo "Archive extracted successfully.";
    } else {
        echo "Extraction failed: " . $zip->getStatusString();
    }

    $zip->close();
} else {
    echo "Failed to open archive.";
}

В этом примере мы создаем экземпляр класса ZipArchive и пытаемся открыть архив с помощью open(). Если это удалось, мы проверяем существование целевой директории, а затем извлекаем все содержимое с помощью extractTo(). Мы проверяем возвращаемое значение и используем getStatusString() для вывода сообщений об ошибках перед закрытием дескриптора с помощью close().

Заключение

В этой статье мы обсудили, как работать с ZIP-архивами в современном PHP с помощью класса ZipArchive. Мы объяснили, что такое ZIP-архивы, и привели практический пример извлечения файлов на диск с правильной обработкой ошибок. Используя ZipArchive в своих PHP-приложениях, вы сможете надежно управлять сжатыми файлами для передачи или хранения.

Практика

Какие из следующих утверждений о расширении ZIP в PHP являются верными?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.