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_*(incluindozip_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 classeZipArchive.
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.