実行可能でない tar/zip アーカイブを実行可能な phar アーカイブ形式に変換する

# PharData::convertToExecutable

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

PharData::convertToExecutable — 実行可能でない tar/zip アーカイブを実行可能な phar アーカイブ形式に変換する

### 説明

public function PharData::convertToExecutable(?int `$format` = `null`, ?int `$compression` = `null`, ?string `$extension` = `null`): ?Phar

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

このメソッドは、実行可能でない tar あるいは zip アーカイブを実行可能な phar 形式に変換します。実行可能なファイル形式 3 種類 (phar, tar あるいは zip) のどれでも使用することができ、アーカイブ全体の圧縮も行うことができます。

何も変更しなかった場合、このメソッドは BadMethodCallException をスローします。

成功した場合は、このメソッドはディスク上に新しいアーカイブを作成して Phar オブジェクトを返します。 古いアーカイブは削除されずディスク上に残るので、 処理を終えたら手動で削除する必要があります。

### パラメータ

`format`

  これは `Phar::PHAR`、`Phar::TAR` あるいは `Phar::ZIP` のいずれかとなります。 `null` を指定すると、現在のファイル形式をそのまま保持します。

`compression`

  アーカイブ全体の圧縮を行わない場合は `Phar::NONE`、 zlib による圧縮の場合は `Phar::GZ`、そして bzip による圧縮の場合は `Phar::BZ2` のいずれかを指定します。

`extension`

  このパラメータは、変換後のアーカイブのデフォルトのファイル拡張子を変更します。 実行可能でない tar や zip アーカイブのファイル名としては `.phar` は使用できないことに注意しましょう。

  phar 形式のアーカイブに変換する場合、デフォルトの拡張子は圧縮形式によって `.phar`、`.phar.gz` あるいは `.phar.bz2` のいずれかとなります。tar 形式のアーカイブの場合、デフォルトの拡張子は `.phar.tar`、`.phar.tar.gz` および `.phar.tar.bz2` です。zip 形式のアーカイブの場合、 デフォルトの拡張子は `.phar.zip` となります。

### 戻り値

このメソッドは、成功した場合に Phar オブジェクトを返します。失敗した場合は `null` を返します。

### エラー / 例外

圧縮ができない場合や無効な圧縮方式が指定された場合、あるいは Phar::startBuffering() でバッファリングしたまま Phar::stopBuffering() を実行していないアーカイブを処理しようとした場合に BadMethodCallException をスローします。 また、書き込みサポートが無効な場合に UnexpectedValueException、 phar 作成中に何らかの問題が発生した場合に PharException をスローします。

### 変更履歴

バージョン | 説明
--- | ---
8.0.0 | `format`、 `compression`、 `localName` は、nullable になりました。

### 例

例1 PharData::convertToExecutable() の例

PharData::convertToExecutable() の使用例です。

    <?php
    try {
        $tarphar = new PharData('myphar.tar');
        // phar ファイル形式に変換します
        // myphar.tar は削除 *されない* ことに注意しましょう
        $phar = $tarphar->convertToExecutable(Phar::PHAR); // creates myphar.phar
        $phar->setStub($phar->createDefaultStub('cli.php', 'web/index.php'));
        // myphar.phar.tgz を作成します
        $compressed = $tarphar->convertToExecutable(Phar::TAR, Phar::GZ, '.phar.tgz');
    } catch (Exception $e) {
        // ここでエラー処理をします
    }
    ?>

### 参考

- Phar::convertToExecutable() - phar アーカイブを実行可能な別の phar アーカイブ形式に変換する
- Phar::convertToData() - phar アーカイブを実行可能でない tar あるいは zip ファイルに変換する
- PharData::convertToData() - phar アーカイブを実行可能でない tar あるいは zip ファイルに変換する

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open