Populate a tar or zip archive from an iterator. Two styles of iterators are supported,
iterators that map the filename within the tar/zip to the name of a file on disk,
and iterators like DirectoryIterator that return
SplFileInfo objects. For iterators that return SplFileInfo objects, the second
parameter is required.
Примеры
Пример #1 A PharData::buildFromIterator() with SplFileInfo
For most tar/zip archives, the archive will reflect an actual directory layout, and
the second style is the most useful. For instance, to create a tar/zip archive
containing the files in this sample directory layout:
This code could be used to add these files to the "project.tar" tar archive:
<?php $phar = new PharData('project.tar'); $phar->buildFromIterator( new RecursiveIteratorIterator( new RecursiveDirectoryIterator('/path/to/project')), '/path/to/project'); ?>
The file project.tar can then be used immediately. PharData::buildFromIterator() does not
set values such as compression, metadata, and this can be done after creating the
tar/zip archive.
As an interesting note, PharData::buildFromIterator() can also be used to
copy the contents of an existing phar, tar or zip archive, as the PharData object descends
from DirectoryIterator:
<?php $phar = new PharData('project.tar'); $phar->buildFromIterator( new RecursiveIteratorIterator( new Phar('/path/to/anotherphar.phar')), 'phar:///path/to/anotherphar.phar/path/to/project'); $phar->setStub($phar->createDefaultWebStub('cli/index.php', 'www/index.php')); ?>
Пример #2 A PharData::buildFromIterator() with other iterators
The second form of the iterator can be used with any iterator that returns
a key => value mapping, such as an ArrayIterator:
<?php $phar = new PharData('project.tar'); $phar->buildFromIterator( new ArrayIterator( array( 'internal/file.php' => dirname(__FILE__) . '/somefile.php', 'another/file.jpg' => fopen('/path/to/bigfile.jpg', 'rb'), ))); ?>
Список параметров
iter
Any iterator that either associatively maps tar/zip file to location or
returns SplFileInfo objects
base_directory
For iterators that return SplFileInfo objects, the portion of each
file's full path to remove when adding to the tar/zip archive
Возвращаемые значения
PharData::buildFromIterator() returns an associative array
mapping internal path of file to the full path of the file on the
filesystem.
Errors/Exceptions
This method returns UnexpectedValueException when the
iterator returns incorrect values, such as an integer key instead of a
string, a BadMethodCallException when an
SplFileInfo-based iterator is passed without a base_directory
parameter, or a PharException if there were errors
saving the phar archive.