zip_entry_close()
Die Funktion zip_entry_close() ist eine eingebaute PHP-Funktion, die dazu dient, ein zip_entry-Handle zu schließen und die zugehörige Ressource freizugeben.
⚠️ Veraltet und entfernt: Die
zip_*-Funktionen (einschließlichzip_entry_close()) wurden in PHP 7.4 als veraltet markiert und in PHP 8.0 entfernt. Dieser Inhalt dient ausschließlich als Legacy-Referenz. Verwenden Sie für modernes PHP stattdessen die KlasseZipArchive.
Die Funktion zip_entry_close() war eine eingebaute PHP-Funktion zum Schließen eines zip_entry-Handles. Wenn Sie die Arbeit mit einer Datei in einem ZIP-Archiv abgeschlossen haben, sollten Sie das Handle mit zip_entry_close() schließen, um die zugehörige Ressource freizugeben. (Hinweis: Die veraltete ZIP-Erweiterung war primär schreibgeschützt, daher werden beim Schließen des Handles keine Änderungen am Archiv gespeichert.)
Syntax
Die Syntax der Funktion zip_entry_close() lautet wie folgt:
Syntax der Funktion zip_entry_close() in PHP
void zip_entry_close(resource $zip_entry)Dabei ist $zip_entry das von zip_read() zurückgegebene zip_entry-Handle. (Hinweis: Der Typ-Hinweis resource ist veraltet; diese Funktion existiert in PHP 8.0+ nicht mehr.)
Verwendungsbeispiele
Schauen wir uns ein praktisches Beispiel für die Verwendung von zip_entry_close() in PHP an.
Beispiel: Schließen eines Zip-Entry-Handles
Angenommen, Sie haben ein ZIP-Archiv mit den PHP-ZIP-Funktionen geöffnet und den Inhalt einer Datei mit zip_entry_read() extrahiert. Sie sollten das zip_entry-Handle mit zip_entry_close() schließen, sobald Sie damit fertig sind, wie folgt:
Schließen eines Zip-Entry-Handles in 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);
}Dieser Code öffnet eine ZIP-Archivdatei example.zip mit zip_open(), liest den ersten Eintrag mit zip_read() und würde ihn in einem echten Programm mit zip_entry_open() öffnen und mit zip_entry_read() lesen. Wenn Sie fertig sind, schließt zip_entry_close() das zip_entry-Handle und gibt die Ressource frei, und schließlich schließt zip_close() das Archiv selbst.
Über alle Einträge iterieren
In der Praxis schließt man selten einen einzelnen Eintrag manuell. zip_read() gibt bei jedem Aufruf den nächsten Eintrag zurück und false, wenn keine weiteren vorhanden sind. Eine while-Schleife schließt daher jeden Handle während des Durchlaufs:
$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);
}Migration zu ZipArchive
Da die zip_*-Familie in PHP 8.0+ nicht mehr existiert, wird das obige Beispiel auf einem modernen Interpreter Call to undefined function auslösen. Die Klasse ZipArchive ist der empfohlene Ersatz. Sie erfordert kein Schließen einzelner Einträge — Sie lesen einen Eintrag nach Namen und rufen close() für das gesamte Archiv auf, sobald Sie fertig sind:
<?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() ersetzt sowohl zip_entry_close() als auch zip_close() und schreibt im Gegensatz zur schreibgeschützten Legacy-Erweiterung auch alle Änderungen fest, die Sie mit addFile() oder addFromString() vorgenommen haben.
Fazit
In diesem Artikel haben wir die veraltete Funktion zip_entry_close(), ihre Syntax und ihre Rolle im Workflow zip_open() → zip_read() → zip_entry_close() → zip_close() besprochen. Wie bereits erwähnt, wurden diese Funktionen in PHP 8.0 entfernt. Für die moderne PHP-Entwicklung sollten Sie zur Klasse ZipArchive migrieren, die eine robuste, objektorientierte API zum Erstellen, Lesen und Ändern von ZIP-Archiven bietet – ganz ohne die Verwaltung einzelner Entry-Handles.