Phar::apiVersion
Phar::buildFromIterator
Phar
PHP Manual

# Phar::buildFromDirectory

(PHP >= 5.3.0, PECL phar >= 2.0.0)

Phar::buildFromDirectory — ディレクトリ内のファイルから phar を作成する

### 説明

array Phar::buildFromDirectory ( string `$base_dir` [, string `$regex` ] )

> 注意: このメソッドは、php.ini の phar.readonly が 0 でないと Phar オブジェクトで動作しません。それ以外の場合は PharException がスローされます。

ディレクトリの中身をもとに phar アーカイブを作成します。 オプションの 2 番目のパラメータで正規表現 (pcre) を指定すると、特定のファイルを除外することができます。 正規表現にマッチするすべてのファイルがアーカイブに含められ、 それ以外のファイルは除外されます。より詳細に制御するには Phar::buildFromIterator() を使用します。

### パラメータ

`base_dir`

  アーカイブに追加するすべてのファイルを含むディレクトリへの フルパスあるいは相対パス。

`regex`

  オプションで指定する pcre 正規表現。 これを使用してファイル一覧をフィルタリングします。 正規表現にマッチするファイルパスのみがアーカイブに追加されます。

### 返り値

Phar::buildFromDirectory() は、連想配列を返します。これは、 ファイルの内部パスをファイルシステム上のフルパスを対応させたものです。

### エラー / 例外

このメソッドは、内部ディレクトリイテレータのインスタンスの作成に失敗したときに BadMethodCallException をスローします。 また、phar アーカイブの保存時にエラーが発生した場合は PharException をスローします。

### 例

例1 Phar::buildFromDirectory() の例

`<?php
// "project.phar" というエイリアスで作成します
$phar = new Phar('project.phar', 0, 'project.phar');
// project 内のすべてのファイルを追加します
$phar->buildFromDirectory(dirname(__FILE__) . '/project');
$phar->setStub($phar->createDefaultWebStub('cli/index.php', 'www/index.php'));
$phar2 = new Phar('project2.phar', 0, 'project2.phar');
// project 内のファイルのうち、php ファイルだけを追加します
$phar->buildFromDirectory(dirname(__FILE__) . '/project', '/\.php$/');
$phar->setStub($phar->createDefaultWebStub('cli/index.php', 'www/index.php'));
?>`

### 参考

- Phar::buildFromIterator() - イテレータから phar アーカイブを作成する

Phar::apiVersion
Phar::buildFromIterator
Phar
PHP Manual