phar アーカイブ内のファイルを、phar 内で別の新しいファイルとしてコピーする

# Phar::copy

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

Phar::copy — phar アーカイブ内のファイルを、phar 内で別の新しいファイルとしてコピーする

### 説明

public function Phar::copy(string `$from`, string `$to`): true

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

phar アーカイブ内のファイルを、そのアーカイブ内で別の新しいファイルとしてコピーします。 これは、phar ストリームラッパーでの copy() と同等の操作をオブジェクト指向で行うものです。

### パラメータ

`from`

`to`

### 戻り値

常に `true` を返します。

### エラー / 例外

コピー元のファイルが存在しない、コピー先のファイルが既に存在する、 書き込みアクセスが無効になっている、どちらかのファイルのオープンに失敗した、 あるいはコピー元のファイルの読み込みに失敗した場合に UnexpectedValueException をスローします。 変更内容の phar への書き込みに失敗した場合は PharException をスローします。

### 例

例1 Phar::copy() の例

この例は、Phar::copy() の使用法のほかに それと同等の操作をストリームラッパーで行う方法を示すものです。 これらの方式の最大の違いはエラー処理です。 Phar のすべてのメソッドは例外をスローしますが、ストリームラッパーの場合は trigger_error() を使用します。

    <?php

    try {
        $phar = new Phar('myphar.phar');

        $phar['a'] = 'hi';
        $phar->copy('a', 'b');

        echo $phar['b']; // 出力は "phar://myphar.phar/b"
    } catch (Exception $e) {
        // エラー処理
    }

    // 上のコードと同等の処理をストリームラッパーで行う例。
    // エラー時には例外ではなく E_WARNINGS が発生します
    copy('phar://myphar.phar/a', 'phar//myphar.phar/c');
    echo file_get_contents('phar://myphar.phar/c'); // 出力は "hi"

    ?>

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