Метод mirror
Метод mirror класса Filesystem выполняет
рекурсивное копирование содержимого одной директории
в другую. Первым параметром передаётся исходная
директория originDir, вторым - целевая директория
targetDir. Метод возвращает true в случае
успешного копирования и бросает исключение
IOException при возникновении ошибки.
В отличие от метода copy, который копирует
отдельный файл, метод mirror работает
с целыми директориями и сохраняет структуру
вложенности файлов.
Синтаксис
public function mirror(string $originDir, string $targetDir, ?Traversable $iterator = null, array $options = []): bool
Пример
Давайте скопируем содержимое директории
var/source в директорию var/target:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Routing\Attribute\Route;
class MirrorController extends AbstractController
{
#[Route('/mirror', name: 'mirror_index')]
public function index(): Response
{
$fs = new Filesystem();
$originDir = $this->getParameter('kernel.project_dir') . '/var/source';
$targetDir = $this->getParameter('kernel.project_dir') . '/var/target';
$fs->mirror($originDir, $targetDir);
return new Response('Directory mirrored');
}
}
?>
Результат выполнения кода:
"Directory mirrored"
Пример
Давайте проверим, что после копирования файлы
доступны в целевой директории через метод
exists:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Routing\Attribute\Route;
class MirrorController extends AbstractController
{
#[Route('/mirror-check', name: 'mirror_check')]
public function check(): Response
{
$fs = new Filesystem();
$projectDir = $this->getParameter('kernel.project_dir');
$originDir = $projectDir . '/var/source';
$targetDir = $projectDir . '/var/target';
$fs->mirror($originDir, $targetDir);
$res = $fs->exists($targetDir . '/file.txt');
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
true
Смотрите также
-
класс
Filesystem,
который предоставляет методы для работы с файловой системой -
метод
copy,
который копирует отдельный файл -
метод
exists,
который проверяет наличие файла или директории -
метод
remove,
который удаляет файлы и директории