(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)
PharData::copy — Copiar un fichero interno de un archivo phar a otro fichero nuevo dentro del phar
Copia un fichero interno de un archivo tar/zip a otro fichero nuevo dentro del mismo archivo. Esta es una alternativa orientada a objetos para usar copy() con la envoltura de flujos phar.
oldfile
newfile
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.
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.
Ejemplo #1 Un ejemplo de Phar::copy()
Este ejemplo muestra el uso de PharData::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 PharData lanzan excepciones, mientras que la envoltura de flujos utiliza trigger_error().
<?php
try {
$phar = new PharData('miphar.tar');
$phar['a'] = 'hola';
$phar->copy('a', 'b');
echo $phar['b']; // imprime "phar://miphar.tar/b"
} 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.tar/a', 'phar//miphar.tar/c');
echo file_get_contents('phar://miphar.tar/c'); // imprime "hola"
?>