Phar::copy
(PHP 5 >= 5.3.0, PHP 7, PECL phar >= 2.0.0)
Phar::copy — phar アーカイブ内のファイルを、phar 内で別の新しいファイルとしてコピーする
説明
public Phar::copy
( string $oldfile
, string $newfile
) : bool
注意:
このメソッドは、
php.ini
のphar.readonly
が0
でないと Phar オブジェクトで動作しません。それ以外の場合は PharException がスローされます。
phar アーカイブ内のファイルを、そのアーカイブ内で別の新しいファイルとしてコピーします。 これは、phar ストリームラッパーでの copy() と同等の操作をオブジェクト指向で行うものです。
パラメータ
oldfile
newfile
返り値
成功した場合に true
を返します。しかし、より安全を期すなら
try/catch ブロック内で使用して例外がスローされないことを確認するといいでしょう。
エラー / 例外
コピー元のファイルが存在しない、コピー先のファイルが既に存在する、 書き込みアクセスが無効になっている、どちらかのファイルのオープンに失敗した、 あるいはコピー元のファイルの読み込みに失敗した場合に UnexpectedValueException をスローします。 変更内容の phar への書き込みに失敗した場合は PharException をスローします。
例
例1 Phar::copy() の例
この例は、Phar::copy() の使用法のほかに それと同等の操作をストリームラッパーで行う方法を示すものです。 これらの方式の最大の違いはエラー処理です。 Phar のすべてのメソッドは例外をスローしますが、ストリームラッパーの場合は trigger_error() を使用します。
<?phptry { $phar = new Phar('myphar.phar'); $phar['a'] = 'hi'; $phar->copy('a', 'b'); echo $phar['b']; // 出力は "hi"} catch (Exception $e) { // エラー処理}// 上のコードと同等の処理をストリームラッパーで行う例。// エラー時には例外ではなく E_WARNINGS が発生しますcopy('phar://myphar.phar/a', 'phar//myphar.phar/c');echo file_get_contents('phar://myphar.phar/c'); // 出力は "hi"?>