W3docs

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ßlich zip_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 Klasse ZipArchive.

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.

Übung

Übung
Was macht die Funktion zip_entry_close() in PHP?
Was macht die Funktion zip_entry_close() in PHP?
Was this page helpful?