Phar::buildFromDirectory
(PHP >= 5.3.0, PECL phar >= 2.0.0)
Phar::buildFromDirectory — Construct a phar archive from the files within a directory.
Описание
$base_dir
[, string $regex
] )Замечание:
Для корректной работы с объектами Phar этому методу необходима установка значения php.ini phar.readonly в 0. В противном случае, будет выброшено исключение PharException.
Populate a phar archive from directory contents. The optional second parameter is a regular expression (pcre) that is used to exclude files. Any filename that matches the regular expression will be included, all others will be excluded. For more fine-grained control, use Phar::buildFromIterator().
Список параметров
-
base_dir
-
The full or relative path to the directory that contains all files to add to the archive.
-
regex
-
An optional pcre regular expression that is used to filter the list of files. Only file paths matching the regular expression will be included in the archive.
Возвращаемые значения
Phar::buildFromDirectory() returns an associative array mapping internal path of file to the full path of the file on the filesystem.
Ошибки
This method throws BadMethodCallException when unable to instantiate the internal directory iterators, or a PharException if there were errors saving the phar archive.
Примеры
Пример #1 A Phar::buildFromDirectory() example
<?php
// create with alias "project.phar"
$phar = new Phar('project.phar', 0, 'project.phar');
// add all files in the project
$phar->buildFromDirectory(dirname(__FILE__) . '/project');
$phar->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));
$phar2 = new Phar('project2.phar', 0, 'project2.phar');
// add all files in the project, only include php files
$phar2->buildFromDirectory(dirname(__FILE__) . '/project', '/\.php$/');
$phar2->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));
?>
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для сжатия и архивации
- Phar
- Функция Phar::addEmptyDir() - Add an empty directory to the phar archive
- Функция Phar::addFile() - Add a file from the filesystem to the phar archive
- Функция Phar::addFromString() - Add a file from the filesystem to the phar archive
- Функция Phar::apiVersion() - Returns the api version
- Функция Phar::buildFromDirectory() - Construct a phar archive from the files within a directory.
- Функция Phar::buildFromIterator() - Construct a phar archive from an iterator.
- Функция Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
- Функция Phar::canWrite() - Returns whether phar extension supports writing and creating phars
- Функция Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
- Функция Phar::compressAllFilesBZIP2() - Compresses all files in the current Phar archive using Bzip2 compression
- Функция Phar::compressAllFilesGZ() - Compresses all files in the current Phar archive using Gzip compression
- Функция Phar::compressFiles() - Compresses all files in the current Phar archive
- Функция Phar::__construct() - Construct a Phar archive object
- Функция Phar::convertToData() - Convert a phar archive to a non-executable tar or zip file
- Функция Phar::convertToExecutable() - Convert a phar archive to another executable phar archive file format
- Функция Phar::copy() - Copy a file internal to the phar archive to another new file within the phar
- Функция Phar::count() - Returns the number of entries (files) in the Phar archive
- Функция Phar::createDefaultStub() - Create a phar-file format specific stub
- Функция Phar::decompress() - Decompresses the entire Phar archive
- Функция Phar::decompressFiles() - Decompresses all files in the current Phar archive
- Функция Phar::delMetadata() - Deletes the global metadata of the phar
- Функция Phar::delete() - Delete a file within a phar archive
- Функция Phar::extractTo() - Extract the contents of a phar archive to a directory
- Функция Phar::getMetadata() - Returns phar archive meta-data
- Функция Phar::getModified() - Return whether phar was modified
- Функция Phar::getSignature() - Return MD5/SHA1/SHA256/SHA512/OpenSSL signature of a Phar archive
- Функция Phar::getStub() - Return the PHP loader or bootstrap stub of a Phar archive
- Функция Phar::getSupportedCompression() - Return array of supported compression algorithms
- Функция Phar::getSupportedSignatures() - Return array of supported signature types
- Функция Phar::getVersion() - Return version info of Phar archive
- Функция Phar::hasMetadata() - Returns whether phar has global meta-data
- Функция Phar::interceptFileFuncs() - instructs phar to intercept fopen, file_get_contents, opendir, and all of the stat-related functions
- Функция Phar::isBuffering() - Used to determine whether Phar write operations are being buffered, or are flushing directly to disk
- Функция Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
- Функция Phar::isFileFormat() - Returns true if the phar archive is based on the tar/phar/zip file format depending on the parameter
- Функция Phar::isValidPharFilename() - Returns whether the given filename is a valid phar filename
- Функция Phar::isWritable() - Returns true if the phar archive can be modified
- Функция Phar::loadPhar() - Loads any phar archive with an alias
- Функция Phar::mapPhar() - Reads the currently executed file (a phar) and registers its manifest
- Функция Phar::mount() - Mount an external path or file to a virtual location within the phar archive
- Функция Phar::mungServer() - Defines a list of up to 4 $_SERVER variables that should be modified for execution
- Функция Phar::offsetExists() - determines whether a file exists in the phar
- Функция Phar::offsetGet() - Gets a PharFileInfo object for a specific file
- Функция Phar::offsetSet() - set the contents of an internal file to those of an external file
- Функция Phar::offsetUnset() - remove a file from a phar
- Функция Phar::running() - Returns the full path on disk or full phar URL to the currently executing Phar archive
- Функция Phar::setAlias() - Set the alias for the Phar archive
- Функция Phar::setDefaultStub() - Used to set the PHP loader or bootstrap stub of a Phar archive to the default loader
- Функция Phar::setMetadata() - Sets phar archive meta-data
- Функция Phar::setSignatureAlgorithm() - set the signature algorithm for a phar and apply it.
- Функция Phar::setStub() - Used to set the PHP loader or bootstrap stub of a Phar archive
- Функция Phar::startBuffering() - Start buffering Phar write operations, do not modify the Phar object on disk
- Функция Phar::stopBuffering() - Stop buffering write requests to the Phar archive, and save changes to disk
- Функция Phar::uncompressAllFiles() - Uncompresses all files in the current Phar archive
- Функция Phar::unlinkArchive() - Completely remove a phar archive from disk and from memory
- Функция Phar::webPhar() - mapPhar for web-based phars. front controller for web applications
Коментарии
If you want to exclude a directory from the archive (but include all the other content), the regular expression must take into consideration the whole path of the file, not just the file or directory name relative to the source folder.
As an example, if we want to exclude "nbproject" directory from the archive (and any occurrence of it):
/tmp/myfolder
/nbproject
/something
/something-else
/nbproject
/file1.php
/file2.php
the regex should be:
<?php
$exclude = '/^(?!(.*nbproject))(.*)$/i'; //ignoring the case
?>
A more complete example:
<?php
$archive_file = 'myarchive.tar';
$folder_to_compress = '/tmp/myfolder';
$archive = new PharData($archive_file);
$exclude = '/^(?!(.*nbproject))(.*)$/i';
$archive->buildFromDirectory($folder_to_compress,$exclude);
$archive->compress(Phar::GZ);
unlink($archive_file); // as we already obtained a tar.gz
?>
the archive will contain:
/
/something
/something-else
/file1.php
/file2.php