РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
636 of 1361 menu

Метод 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,
    который удаляет файлы и директории
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить