Копирует файл внутри 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

> Замечание: Для корректной работы метода с объектами Phar потребуется установить для директивы `phar.readonly` в файле php.ini значение `0`, иначе метод выбросит исключение PharException.

Метод копирует внутренний файл phar-архива в другой новый файл внутри phar-архива. Это объектно-ориентированная альтернатива функции copy() с обёрткой потока phar.

### Список параметров

`from`

`to`

### Возвращаемые значения

Функция возвращает логическое значение `true`.

### Ошибки

Метод выбрасывает исключение UnexpectedValueException, если исходный файл не существует, целевой файл уже существует, доступ на запись запретили, если хотя бы один файл невозможно открыть или невозможно прочитать исходный файл, или выбрасывает исключение PharException, если в phar-файл невозможно записать изменения.

### Примеры

Пример #1 Пример копирования файла внутри phar-архива методом Phar::copy()

Пример показывает работу метода Phar::copy() и эквивалентной ему по функциональности обёртки потока для решения одной и той же задачи. Основная разница между подходами состоит в обработке ошибок. Методы класса Phar выбрасывают исключения, а обёртка потока использует функцию trigger_error().

    <?php

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

        $phar['a'] = 'привет';
        $phar->copy('a', 'b');

        echo $phar['b']; // Выводит "phar://myphar.phar/b"
    } catch (Exception $e) {
        // Обработка ошибок
    }

    // Обёртка потока эквивалентна приведённому коду.
    // Вместо исключения срабатывает ошибка уровня E_WARNING
    copy('phar://myphar.phar/a', 'phar//myphar.phar/c');
    echo file_get_contents('phar://myphar.phar/c'); // Выведет "привет"

    ?>

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