Nette\Utils\FileSystem::copy PHP Метод

copy() публичный статический Метод

Copies a file or directory.
public static copy ( $source, $dest, $overwrite = TRUE ) : void
Результат void
    public static function copy($source, $dest, $overwrite = TRUE)
    {
        if (stream_is_local($source) && !file_exists($source)) {
            throw new Nette\IOException("File or directory '{$source}' not found.");
        } elseif (!$overwrite && file_exists($dest)) {
            throw new Nette\InvalidStateException("File or directory '{$dest}' already exists.");
        } elseif (is_dir($source)) {
            static::createDir($dest);
            foreach (new \FilesystemIterator($dest) as $item) {
                static::delete($item->getPathname());
            }
            foreach ($iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($source, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::SELF_FIRST) as $item) {
                if ($item->isDir()) {
                    static::createDir($dest . '/' . $iterator->getSubPathName());
                } else {
                    static::copy($item->getPathname(), $dest . '/' . $iterator->getSubPathName());
                }
            }
        } else {
            static::createDir(dirname($dest));
            if (@stream_copy_to_stream(fopen($source, 'r'), fopen($dest, 'w')) === FALSE) {
                // @ is escalated to exception
                throw new Nette\IOException("Unable to copy file '{$source}' to '{$dest}'.");
            }
        }
    }

Usage Example

Пример #1
0
 public function build()
 {
     foreach (\Nette\Utils\Finder::findFiles('*.latte')->from($this->settings->template) as $template) {
         $destination = $this->settings->netteRoot . str_replace($this->settings->template, '', mb_substr($template, 0, -6));
         if (mb_strpos($destination, '\\Module') !== FALSE) {
             $destination = str_replace('\\Module', $this->settings->module ? '\\' . $this->settings->module . 'Module' : '\\', $destination);
         }
         if (mb_strpos($destination, '\\NDBT') !== FALSE && $this->settings->target !== \Utils\Constants::TARGET_NETTE_DATABASE || mb_strpos($destination, '\\D2') !== FALSE && $this->settings->target !== \Utils\Constants::TARGET_DOCTRINE2) {
             continue;
         } else {
             $destination = str_replace(['\\NDBT', '\\D2'], '\\', $destination);
         }
         if (mb_strpos($destination, '\\Table') !== FALSE) {
             foreach ($this->settings->tables as $table) {
                 $this->parameters['table'] = $table;
                 $newDestination = str_replace('\\Table', "\\{$table->sanitizedName}", $destination);
                 if (mb_strpos(basename($destination), '.') !== FALSE) {
                     $this->saveTemplate($newDestination, $this->processTemplate($template, $this->parameters));
                 } else {
                     $this->processTemplate($newDestination, $this->parameters);
                 }
             }
         } else {
             if (mb_strpos(basename($destination), '.') !== FALSE) {
                 $this->saveTemplate($destination, $this->processTemplate($template, $this->parameters));
             } else {
                 $this->processTemplate($template, $this->parameters);
             }
         }
     }
     foreach (\Nette\Utils\Finder::findFiles('*.*')->exclude('*.latte')->from($this->settings->template) as $template) {
         $destination = $this->settings->netteRoot . str_replace($this->settings->template, '', $template);
         \Nette\Utils\FileSystem::copy($template, $destination);
     }
 }
All Usage Examples Of Nette\Utils\FileSystem::copy