Ejemplo n.º 1
0
 /**
  * Копирует директорию со всеми вложенными элементами.
  * Если файл назначения уже существует, то его копирование
  * не выполняет. По умолчанию устанавливает права доступа
  * 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);
 }