Phar::buildFromDirectory

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::buildFromDirectoryConstrói um arquivo phar a partir dos arquivos dentro de um diretório

Descrição

public Phar::buildFromDirectory(string $directory, string $pattern = ""): array

Nota:

Este método requer que a configuração phar.readonly do php.ini seja definida como 0 para funcionar com objetos Phar. Caso contrário, uma exceção PharException será lançada.

Preenche um arquivo phar a partir do conteúdo do diretório. O segundo parâmetro opcional é uma expressão regular (pcre) usada para excluir arquivos. Qualquer nome de arquivo que corresponda à expressão regular será incluído, todos os outros serão excluídos. Para um controle mais refinado, use Phar::buildFromIterator().

Parâmetros

directory

O caminho completo ou relativo para o diretório que contém todos os arquivos a serem adicionados ao arquivo.

pattern

Uma expressão regular pcre opcional usada para filtrar a lista de arquivos. Somente caminhos de arquivo que correspondam à expressão regular serão incluídos no arquivo.

Valor Retornado

Phar::buildFromDirectory() retorna um array associativo mapeando o caminho interno do arquivo para o caminho completo do arquivo no sistema de arquivos.

Erros/Exceções

Este método lança BadMethodCallException quando não é possível instanciar os iteradores de diretório interno, ou uma PharException se houver erros ao salvar o arquivo phar.

Registro de Alterações

Versão Descrição
8.1.0 Phar::buildFromDirectory() não retorna mais false.

Exemplos

Exemplo #1 Um exemplo de Phar::buildFromDirectory()

<?php
// cria com o apelido "project.phar"
$phar = new Phar('project.phar', 0, 'project.phar');
// adiciona todos os arquivos no projeto
$phar->buildFromDirectory(dirname(__FILE__) . '/project');
$phar->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));

$phar2 = new Phar('project2.phar', 0, 'project2.phar');
// adiciona todos os arquivos do projeto, inclui apenas arquivos php
$phar2->buildFromDirectory(dirname(__FILE__) . '/project', '/\.php$/');
$phar2->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));
?>

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 1 note

up
6
dalfarra at codref dot com
7 years ago
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
To Top