zip_entry_close()
La fonction zip_entry_close() fermait un handle zip_entry en PHP. Supprimée en PHP 8.0 ; utilisez ZipArchive à la place.
⚠️ Obsolète et supprimée : Les fonctions
zip_*(dontzip_entry_close()) ont été dépréciées en PHP 7.4 et supprimées en PHP 8.0. Ce contenu est conservé à titre de référence historique uniquement. Pour un PHP moderne, utilisez la classeZipArchiveà la place.
La fonction zip_entry_close() était une fonction intégrée en PHP utilisée pour fermer un handle zip_entry. Lorsque vous avez terminé de travailler avec un fichier dans une archive zip, vous deviez fermer le handle avec zip_entry_close() afin de libérer la ressource associée. (Remarque : l'extension zip héritée était principalement en lecture seule, la fermeture du handle ne sauvegarde donc pas les modifications apportées à l'archive.)
Syntaxe
La syntaxe de la fonction zip_entry_close() est la suivante :
Syntaxe de la fonction zip_entry_close() en PHP
void zip_entry_close(resource $zip_entry)Où $zip_entry est le handle zip_entry retourné par zip_read(). (Remarque : le type resource est hérité ; cette fonction n'existe plus en PHP 8.0+.)
Exemples d'utilisation
Voyons un exemple pratique d'utilisation de zip_entry_close() en PHP.
Exemple : Fermer un handle d'entrée zip
Supposons que vous ayez ouvert une archive zip à l'aide des fonctions zip de PHP et extrait le contenu d'un fichier avec zip_entry_read(). Vous devez fermer le handle zip_entry avec zip_entry_close() une fois que vous en avez terminé, comme ceci :
Fermer un handle d'entrée zip en 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);
}Ce code ouvre une archive zip example.zip avec zip_open(), lit la première entrée avec zip_read(), et (dans un vrai programme) l'ouvrirait avec zip_entry_open() avant de la lire avec zip_entry_read(). Une fois terminé, zip_entry_close() ferme le handle zip_entry et libère la ressource, puis zip_close() ferme l'archive elle-même.
Parcourir toutes les entrées
En pratique, on ferme rarement une seule entrée manuellement. zip_read() retourne l'entrée suivante à chaque appel et false lorsqu'il n'y en a plus, donc une boucle while ferme chaque handle au fur et à mesure :
$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);
}Migrer vers ZipArchive
Étant donné que la famille de fonctions zip_* n'existe plus en PHP 8.0+, l'exemple ci-dessus provoquera une erreur Call to undefined function sur un interpréteur moderne. La classe ZipArchive est le remplacement officiel. Elle ne nécessite pas de fermer les entrées individuellement — vous lisez une entrée par son nom et appelez close() sur l'archive entière :
<?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() remplace à la fois zip_entry_close() et zip_close(), et contrairement à l'extension héritée en lecture seule, elle valide également les modifications apportées avec addFile() ou addFromString().
Conclusion
Dans cet article, nous avons passé en revue la fonction héritée zip_entry_close(), sa syntaxe et sa place dans le flux de travail zip_open() → zip_read() → zip_entry_close() → zip_close(). Comme indiqué, ces fonctions ont été supprimées en PHP 8.0. Pour le développement PHP moderne, migrez vers la classe ZipArchive, qui fournit une API robuste et orientée objet pour créer, lire et modifier des archives ZIP sans gestion de handle par entrée.