# Phar::copy

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

Phar::copy — Copiar un fichero interno de un archivo phar a otro fichero nuevo dentro del phar

### Descripción

public Phar::copy(string `$oldfile`, string `$newfile`): bool

> Nota:

> Este método requiere que la opción de php.ini `phar.readonly` esté establecida a `0` para que trabaje con objetos Phar. De otra manera, se lanzará una excepción de tipo PharException.

Copia un fichero interno de un archivo phar a otro fichero nuevo dentro del phar. Esta es una alternativa orientada a objetos para usar copy() con la envoltura de flujos phar.

### Parámetros

`oldfile`

`newfile`

### Valores devueltos

Devuelve `true` en caso de éxito, pero es más seguro encerrar la llamada al método en un bloque try/catch y asumir el éxito si no se lanza ninguna excepción.

### Errores/Excepciones

Lanza una excepción de tipo UnexpectedValueException si el fichero origen no exite, el fichero destino ya existe, el acceso a escritura está deshabilitado, la apertura de cualquiera de los dos ficheros falla, la lectura del fichero fuente falla, o una excepción de tipo PharException si la escritura de los cambios del phar falla.

### Ejemplos

Ejemplo #1 Un ejemplo de Phar::copy()

Este ejemplo muestra el uso de Phar::copy() y su equivalente con envoltura de flujos. La principal diferencia entre los dos enfoques es el manejo de errores. Todos los métodos de Phar lanzan excepciones, mientras que la envoltura de flujos utiliza trigger_error().

`<?php
try {
$phar = new Phar('miphar.phar');
$phar['a'] = 'hola';
$phar->copy('a', 'b');
echo $phar['b']; // imprime "hola"
} catch (Exception $e) {
// manejar errores
}
// el equivalente con envoltura de flujos del código de arriba.
// Se dispara E_WARNINGS en caso de error en vez de excepciones.
copy('phar://miphar.phar/a', 'phar//miphar.phar/c');
echo file_get_contents('phar://miphar.phar/c'); // imprimie "hola"
?>`