PharData::buildFromIterator
En esta página
PharData::buildFromIterator
Construye un archivo tar o zip a partir de un iterador
Descripción#
public PharData::buildFromIterator(Traversable $iterator, [string $baseDirectory]): array
```php
Rellena un archivo tar o zip a partir de un iterador. Dos estilos de iteradores son soportados, los iteradores que hacen corresponder la ruta de archivo dentro del archivo con la ruta en el disco y los iteradores como DirectoryIterator que devuelven objetos SplFileInfo. Para los iteradores que devuelven objetos SplFileInfo, el segundo argumento es requerido.
## Parámetros
`iterator`
Cualquier iterador que haga corresponder de forma asociativa un archivo tar/zip o que devuelva objetos SplFileInfo
`baseDirectory`
Para los iteradores que devuelven objetos SplFileInfo, la parte del camino completo hacia el archivo a eliminar al añadir al archivo tar/zip
## Valores devueltos
`PharData::buildFromIterator` devuelve un array asociativo que hace corresponder una ruta de archivo interna con una ruta completa hacia el archivo en el sistema de archivos.
## Errores/Excepciones
Este método devuelve una excepción `UnexpectedValueException` cuando el iterador devuelve valores incorrectos, como una clave entera en lugar de una cadena, una excepción `BadMethodCallException` cuando se pasa un iterador basado en SplFileInfo sin el argumento `baseDirectory`, o una excepción `PharException` si se han encontrado errores al guardar el archivo phar.
## Historial de cambios
| Versión | Descripción |
|---------|-----------------------------------------------------------|
| 8.1.0 | PharData::buildFromIterator ya no devuelve `false` ahora. |
| 8.0.0 | `baseDirectory` ahora es nullable. |
## Ejemplos
Ejemplo con `PharData::buildFromIterator` y SplFileInfo
Para la mayoría de los archivos tar/zip, el archivo reflejará la estructura de directorio actual y el segundo estilo es el más útil. Por ejemplo, para crear un archivo tar/zip que contenga los archivos con la estructura de directorio a continuación:
/chemin/vers/projet/
config/
dist.xml
debug.xml
lib/
fichier1.php
fichier2.php
src/
processthing.php
www/
index.php
cli/
index.php
Este código puede ser utilizado para añadir archivos a el archivo "projet.tar" tar:
El archivo `projet.tar` puede entonces ser borrado inmediatamente. `PharData::buildFromIterator` no establece parámetros como la compresión, las metadatos, lo cual puede ser hecho después de haber creado el archivo tar/zip.
Se debe notar que `Phar::buildFromIterator` también puede ser utilizado para copiar el contenido de un archivo phar, tar o zip existente, ya que el objeto PharData es derivado de `DirectoryIterator`:
Ejemplo con `PharData::buildFromIterator` y otros iteradores
La segunda forma de iterador puede ser utilizada con cualquier iterador que devuelva una asociación clave =\> valor, tal como `ArrayIterator`:
```php
Véase también#
Phar::buildFromIterator