/** * Копирует директорию со всеми вложенными элементами. * Если файл назначения уже существует, то его копирование * не выполняет. По умолчанию устанавливает права доступа * 0755 для директорий и 0644 для файлов. * * @param string $pathDestDir * @param integer $dirmode * @param integer $filemode * @throws System_FSException */ public function copyTo($pathDestDir, $copyMode = CopyMode::SKIP_EXISTING, $dirmode = 0755, $filemode = 0644) { $destDir = new FileInfo($pathDestDir); if (!$destDir->isDir()) { throw new Exception\DirectoryNotFoundException(); } $newDestDir = new FileInfo($destDir->getRealPath() . '/' . $this->getBasename()); if ($newDestDir->isLink() || $newDestDir->isFile()) { throw new Exception\UnexpectedValueException(); } elseif (!$newDestDir->isDir()) { $newDestDir->control()->create(); } $this->coping($this->createRecursiveDirectoryIterator(), $newDestDir->getRealPath(), $dirmode, $filemode); }