Подпишитесь на RSS

Работа с Zip архивами (PCLZip)

This item was filled under [ Классы ]

PCLZip - это библиотека для создания и работы с архивами формата ZIP.

Библиотека определяет класс. Копия класса определяет только один архив. Методы, описываемые в этом руководстве, позволяют управлять заданным архивом.

Обратите внимание, публичные методы будут работать всегда (поддерживаться из версии в версию), модификации будут описаны в документации. Частные (внутренние) методы могут быть изменены без предупреждения и не должны использоваться при работе.

PCLZip находится в одном файле (pclzip.lib.php) – это все, что требуется, чтобы иметь весь арсенал библиотеки.

Внутреннее представление архива.

Каждый архив PKZIP представлен объектом класса PCLZip. При создании объекта PCLZip (в объекте класса), имя архива ассоциируется с объектом. На данном этапе файл не читается и не проверяется, более того,он может даже не существовать.

require_once('pclzip.lib.php');
$archive = new PclZip("archive.zip");

Архив управляется публичными методами библиотеки PCLZip. Для создания архива, если он еще не существует, необходимо использовать метод ‘create();’ со списком файлов и/или папок как параметр.

Если архив уже существует, его содержание может читаться методами доступа, такими, как: ‘listContent();’ или ‘extract();’.
Параметры и аргументы.

Каждый метод имеет свои параметры и аргументы, которые есть в описании метода. Эти аргументы могут быть принудительными или дополнительными. Пример: require_once(’pclzip.lib.php’);

$archive = new PclZip('archive.zip');
$v_list = $archive->add('dev/file.txt', PCLZIP_OPT_REMOVE_PATH, 'dev');

Здесь первый параметр ‘dev/file.txt’ принудительный, а ‘PCLZIP_OPT_REMOVE_PATH, …’ опциональный.

Некоторые методы можно вызывать только с переменным списком дополнительных параметров:

$list = $archive->extract(PCLZIP_OPT_PATH, "folder",
                                PCLZIP_OPT_REMOVE_PATH, "data",
                                PCLZIP_CB_PRE_EXTRACT, "callback_pre_extract",
                                PCLZIP_CB_POST_EXTRACT, "callback_post_extract");

В этом примере файлы распакованы в каталог ‘folder’, а папка ‘data’, имеющаяся в архиве, из архива удалена.

Также, перед извлечением файла из архива вызывалась возвратная функция, назначенная пользователем (здесь, ‘callback_pre_extract();’). Эта функция позволяет изменить путь и имя файла, который находится в процессе извлечения или пропустить извлечение этого специфического файла. В конце извлечения вызывается другая функция, которая дает пользователю возможность проделать над файлом какие-то действия перед извлечением следующего.

$list = $archive->extract(PCLZIP_OPT_PATH, "folder",
                                PCLZIP_OPT_REMOVE_ALL_PATH);

Здесь файлы извлечены в директорию ‘folder’, а все запомненные пути файлов удалены, даже если они были отличны. Эта особенность позволяет пользователю не определять точный путь для удаления.

Эти небольшие примеры показывают работу списка переменных. Они предлагают более точную работу (хотя и добавляют немного сложности). Они так же позволяют вводить новые возможности, не изменяя синтаксиса всех методов.

Все аргументы, их использование и ограничения описаны в разделе “Дополнительные переменные параметры”. В описании функций перечислен список всех доступных дополнительных параметров.

Возвращаемые данные.

Возвращаемые значения могут отличаться от метода к методу. Они описаны в каждом комментарии метода. Однако, большинство методов возвращают 0 при ошибке (и включают флаг ошибки) или массив, описывающий каждый файл при удаче.

Каждый элемент массива описывает файл или папку, некоторые из ее свойств и определение статуса последнего действия с файлом.

Каждый файл описан следующим набором аргументов:

filename
Имя файла
При добавлении – имя, данное файлу при вызове метода.
При извлечении – реальное название извлеченного файла (не название, которое дано этому файлу в архиве).

stored_filename
Название файла в архиве.

size
Реальный размер файла.

compressed_size
Размер сжатого файла (без заголовков).

mtime
Дата и время последней модификации файла (UNIX таймштамп).

сomment
Комментарий сопоставленный с файлом.

folder
true | false: показывает, находится ли файл в папке.

index
Индекс файла в архиве (если задано).

content
Содержимое извлеченного файла. Этот параметр присутствует только если в качестве аргумента было задано PCLZIP_OPT_EXTRACT_IN_STRING.

status
Результат действия (зависит от типа действия). Значения:
ok – положительный результат.
Filtered – файл/папка не извлечен (отфильтрован пользователем).
already_a_directory – файл не был извлечен, потому что файл или папка с таким же названием уже существует.
newer_exist – файл не был извлечен, потому что такой же файл уже существует и защищен от записи.
write_protect – файл не был извлечен, потому что существует более новый файл.
path_creation_fail – файл не был извлечен – произошла ошибка создания каталога.
write_error – файл не был извлечен – произошла ошибка записи.
read_error – файл не был извлечен – ошибка чтения.
invalid_header – файл не был извлечен – ошибка заголовка.
skipped – файл не был извлечен или добавлен, потому что пользовательская функция просит пропустить его.
filename_to_long – файл не добавлен в архив – слишком длинное имя файла (максимум 255 символов).

Популярность: 38%

Tagged with: [ , ]
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Комментарии