Phar::buildFromIterator
(No version information available, might be only in CVS)
Phar::buildFromIterator — Construct a phar archive from an iterator.
Описание
Замечание: This method requires the php.ini setting phar.readonly to be set to 0 in order to work for Phar objects. Otherwise, a PharException will be thrown.
Populate a phar archive from an iterator. Two styles of iterators are supported, iterators that map the filename within the phar 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 Phar::buildFromIterator() with SplFileInfo
For most phar archives, the archive will reflect an actual directory layout, and the second style is the most useful. For instance, to create a phar archive containing the files in this sample directory layout:
/path/to/project/ config/ dist.xml debug.xml lib/ file1.php file2.php src/ processthing.php www/ index.php cli/ index.php
This code could be used to add these files to the "project.phar" phar archive:
<?php
// create with alias "project.phar"
$phar = new Phar('project.phar', 0, 'project.phar');
$phar->buildFromIterator(
new RecursiveIteratorIterator(
new RecursiveDirectoryIterator('/path/to/project')),
'/path/to/project');
$phar->setStub($phar->createDefaultWebStub('cli/index.php', 'www/index.php'));
?>
The file project.phar can then be used immediately. buildFromIterator() does not set values such as compression, metadata, and this can be done after creating the phar archive.
As an interesting note, buildFromIterator() can also be used to copy the contents of an existing phar archive, as the Phar object descends from DirectoryIterator:
<?php
// create with alias "project.phar"
$phar = new Phar('project.phar', 0, 'project.phar');
$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 Phar::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
// create with alias "project.phar"
$phar = new Phar('project.phar', 0, 'project.phar');
$phar->buildFromIterator(
new ArrayIterator(
array(
'internal/file.php' => dirname(__FILE__) . '/somefile.php',
'another/file.jpg' => fopen('/path/to/bigfile.jpg', 'rb'),
)));
$phar->setStub($phar->createDefaultWebStub('cli/index.php', 'www/index.php'));
?>
Список параметров
- iter
-
Any iterator that either associatively maps phar 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 phar archive
Возвращаемые значения
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.
- Add an empty directory to the phar archive
- Add a file from the filesystem to the phar archive
- Add a file from the filesystem to the phar archive
- Returns the api version
- Construct a phar archive from the files within a directory.
- Construct a phar archive from an iterator.
- Returns whether phar extension supports compression using either zlib or bzip2
- Returns whether phar extension supports writing and creating phars
- Compresses the entire Phar archive using Gzip or Bzip2 compression
- Compresses all files in the current Phar archive using Bzip2 compression
- Compresses all files in the current Phar archive using Gzip compression
- Compresses all files in the current Phar archive
- Construct a Phar archive object
- Convert a phar archive to a non-executable tar or zip file
- Convert a phar archive to another executable phar archive file format
- Copy a file internal to the phar archive to another new file within the phar
- Returns the number of entries (files) in the Phar archive
- Create a phar-file format specific stub
- Decompresses the entire Phar archive
- Decompresses all files in the current Phar archive
- Deletes the global metadata of the phar
- Delete a file within a phar archive
- Extract the contents of a phar archive to a directory
- Returns phar archive meta-data
- Return whether phar was modified
- Return MD5/SHA1/SHA256/SHA512/OpenSSL signature of a Phar archive
- Return the PHP loader or bootstrap stub of a Phar archive
- Return array of supported compression algorithms
- Return array of supported signature types
- Return version info of Phar archive
- Returns whether phar has global meta-data
- instructs phar to intercept fopen, file_get_contents, opendir, and all of the stat-related functions
- Used to determine whether Phar write operations are being buffered, or are flushing directly to disk
- Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
- Returns true if the phar archive is based on the tar/phar/zip file format depending on the parameter
- Returns whether the given filename is a valid phar filename
- Returns true if the phar archive can be modified
- Loads any phar archive with an alias
- Reads the currently executed file (a phar) and registers its manifest
- Mount an external path or file to a virtual location within the phar archive
- Defines a list of up to 4 $_SERVER variables that should be modified for execution
- determines whether a file exists in the phar
- Gets a PharFileInfo object for a specific file
- set the contents of an internal file to those of an external file
- remove a file from a phar
- Returns the full path on disk or full phar URL to the currently executing Phar archive
- Set the alias for the Phar archive
- Used to set the PHP loader or bootstrap stub of a Phar archive to the default loader
- Sets phar archive meta-data
- set the signature algorithm for a phar and apply it.
- Used to set the PHP loader or bootstrap stub of a Phar archive
- Start buffering Phar write operations, do not modify the Phar object on disk
- Stop buffering write requests to the Phar archive, and save changes to disk
- Uncompresses all files in the current Phar archive
- Completely remove a phar archive from disk and from memory
- mapPhar for web-based phars. front controller for web applications
Коментарии
You have to set a flag on the RecursiveDirectoryIterator because by default, the current (".") and parent directory ("..") are included in the listing. This leads to an error message similar to "returned a path ".." that is not in the base directory".
To fix this, use "SKIP_DOTS":
<?php
new RecursiveDirectoryIterator(
$srcRoot, FilesystemIterator::SKIP_DOTS
);
?>
Phars created from iterator (unlike from directory) does not have full-fledged directory structure. For example, functions like opendir() will fail, although fopen() does not.