PharData::buildFromIterator
(PHP 5 >= 5.3.0, PHP 7, PECL phar >= 2.0.0)
PharData::buildFromIterator — Construit une archive tar ou zip à partir d'un itérateur
Description
Remplit une archive tar ou zip à partir d'un itérateur. Deux styles d'itérateurs sont supportés, les itérateurs qui font correspondre le chemin de fichier au sein de l'archive avec le chemin sur le disque, et les itérateurs comme DirectoryIterator qui retournent des objets SplFileInfo. Pour les itérateurs qui retournent des objets SplFileInfo, le second paramètre est requis.
Exemples
Exemple #1 Exemple avec PharData::buildFromIterator() et SplFileInfo
Pour la plupart des archive tar/zip, l'archive reflétera la structure de répertoire actuelle, et le second style est le plus utile. Par exemple, pour créer une archive tar/zip contenant les fichiers contenant la structure de répertoire ci-dessous :
/chemin/vers/projet/ config/ dist.xml debug.xml lib/ fichier1.php fichier2.php src/ processthing.php www/ index.php cli/ index.php
Ce code peut être utilisé pour ajouter des fichiers à l'archive "projet.tar" tar :
<?php
$phar = new PharData('projet.tar');
$phar->buildFromIterator(
new RecursiveIteratorIterator(
new RecursiveDirectoryIterator('/chemin/vers/projet')),
'/chemin/vers/projet');
?>
Le fichier projet.tar peut alors être effacé immédiatement. PharData::buildFromIterator() ne règle pas les paramètres tels que la compression, les métadonnées, ce qui peut être fait après avoir créé l'archive tar/zip.
A noter que Phar::buildFromIterator() peut aussi être utilisé pour copier le contenu d'une archive phar, tar ou zip existante, car l'objet PharData est dérivé de DirectoryIterator :
<?php
$phar = new PharData('projet.tar');
$phar->buildFromIterator(
new RecursiveIteratorIterator(
new Phar('/chemin/vers/unautrephar.phar')),
'phar:///chemin/vers/unautrephar.phar/chemin/vers/projet');
$phar->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));
?>
Exemple #2 Exemple avec PharData::buildFromIterator() et d'autres itérateurs
La seconde forme d'itérateur peut être utilisée avec n'importe quel itérateur qui retourne une association clé => valeur, tel que ArrayIterator :
<?php
$phar = new PharData('projet.tar');
$phar->buildFromIterator(
new ArrayIterator(
array(
'interne/fichier.php' => dirname(__FILE__) . '/unfichier.php',
'unautre/fichier.jpg' => fopen('/chemin/vers/grosfichier.jpg', 'rb'),
)));
?>
Liste de paramètres
-
iter
-
N'importe quel itérateur qui fait correspondre de façon associative un fichier tar/zip ou qui retourne des objets SplFileInfo
-
base_directory
-
Pour les itérateurs qui retournent des objets SplFileInfo, la partie du chemin complet vers le fichier à enlever lors de l'ajout à l'archive tar/zip
Valeurs de retour
PharData::buildFromIterator() retourne un tableau associatif faisant correspondre un chemin de fichier interne avec un chemin complet vers le fichier sur le système de fichiers.
Erreurs / Exceptions
Cette méthode retourne une exception UnexpectedValueException quand
l'itérateur retourne des valeurs incorrectes, comme une clé entière plutôt qu'une chaîne,
une exception BadMethodCallException quand un itérateur basé sur
SplFileInfo-based est passé sans paramètre base_directory
, ou une
exception PharException si des erreurs ont été rencontrées lors de
la sauvegarde de l'archive phar.
Version en cache
04/11/2024 21:22:10 Cette version de la page est en cache (à la date du 04/11/2024 21:22:10) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-phardata.buildfromiterator.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.