W3docs

zip_entry_close()

A função zip_entry_close() é uma função nativa do PHP usada para fechar um identificador zip_entry. Quando terminar de trabalhar com um arquivo zip,

⚠️ Descontinuada e Removida: As funções zip_* (incluindo zip_entry_close()) foram descontinuadas no PHP 7.4 e removidas no PHP 8.0. Este conteúdo é preservado apenas como referência legada. Para PHP moderno, use a classe ZipArchive.

A função zip_entry_close() era uma função nativa do PHP utilizada para fechar um identificador zip_entry. Quando você termina de trabalhar com um arquivo em um arquivo zip, deve fechar o identificador usando zip_entry_close() para liberar o recurso associado. (Nota: A extensão zip legada era primariamente somente leitura, portanto fechar o identificador não salva alterações no arquivo.)

Sintaxe

A sintaxe da função zip_entry_close() é a seguinte:

Sintaxe da função zip_entry_close() em PHP

void zip_entry_close(resource $zip_entry)

Onde $zip_entry é o identificador zip_entry retornado por zip_read(). (Nota: O tipo resource é legado; esta função não existe mais no PHP 8.0+.)

Exemplos de Uso

Vejamos um exemplo prático de uso do zip_entry_close() em PHP.

Exemplo: Fechando um Identificador de Entrada Zip

Suponha que você abriu um arquivo zip usando as funções zip do PHP e extraiu o conteúdo de um arquivo usando zip_entry_read(). Você deve fechar o identificador zip_entry usando zip_entry_close() assim que terminar de utilizá-lo, assim:

Fechando um Identificador de Entrada Zip em PHP

$zip = zip_open("example.zip");
if ($zip !== false) {
    $zip_entry = zip_read($zip);
    if ($zip_entry !== false) {
        // do something with the contents of the zip entry
        zip_entry_close($zip_entry);
    }
    zip_close($zip);
}

Este código abre um arquivo zip example.zip usando zip_open(), lê a primeira entrada com zip_read(), e (em um programa real) a abriria com zip_entry_open() e a leria com zip_entry_read(). Quando você terminar, zip_entry_close() fecha o identificador zip_entry e libera o recurso, e por fim zip_close() fecha o próprio arquivo.

Iterando sobre cada entrada

Na prática, raramente você fecha uma única entrada manualmente. zip_read() retorna a próxima entrada a cada chamada e false quando não há mais entradas, portanto um laço while fecha cada identificador conforme avança:

$zip = zip_open("example.zip");
if (is_resource($zip)) {
    while ($entry = zip_read($zip)) {
        zip_entry_open($zip, $entry);
        // process the entry, e.g. zip_entry_read($entry, zip_entry_filesize($entry));
        zip_entry_close($entry);   // free this entry before moving on
    }
    zip_close($zip);
}

Migrando para ZipArchive

Como a família de funções zip_* não existe mais no PHP 8.0+, o exemplo acima lançará Call to undefined function em um interpretador moderno. A classe ZipArchive é o substituto suportado. Ela não exige que você feche entradas individuais — você lê uma entrada pelo nome e chama close() no arquivo inteiro de uma vez:

<?php
$zip = new ZipArchive();
if ($zip->open("example.zip") === true) {
    // read a file directly by its name inside the archive
    $contents = $zip->getFromName("readme.txt");
    echo $contents;
    $zip->close();   // closes the archive; no per-entry close needed
}

ZipArchive::close() substitui tanto zip_entry_close() quanto zip_close(), e ao contrário da extensão legada somente leitura, também confirma quaisquer alterações feitas com addFile() ou addFromString().

Conclusão

Neste artigo, revisamos a função legada zip_entry_close(), sua sintaxe e como ela se encaixa no fluxo de trabalho zip_open()zip_read()zip_entry_close()zip_close(). Como mencionado, essas funções foram removidas no PHP 8.0. Para o desenvolvimento moderno em PHP, migre para a classe ZipArchive, que fornece uma API robusta e orientada a objetos para criar, ler e modificar arquivos ZIP sem gerenciamento de identificadores por entrada.

Prática

Prática
O que a função zip_entry_close() faz em PHP?
O que a função zip_entry_close() faz em PHP?
Was this page helpful?