Класс Files

Класс с различными методами для работы с файлами.

Files::makeTempFolder($folderName)

Создание временной папки для работы с временными файлами (например, с файлами загруженными на сервер пользователями).

  • Возвращает абсолютный путь в файловой системе к созданной папке.
  • $folderName — имя создаваемой папки (не путь). В реальности будет создана подпапка внутри папки сайта ./temp. Если нужно создать папки более глубокого уровня, используйте относительный путь, с именем головной временной папки, например: $tempDir = Files::makeTempFolder('myUploads/images');.

При каждом использовании метода производится чистка от мусора — папки старше 10 дней удаляются.

Если при создании папки, папка с таким же именем уже существует, то папка будет удалена и создана заново. Забота о том, чтобы не было накладок имен папок лежит на том, кто использует данный метод. Если замещение папок недопустимо, то создавайте уникальные имена (например, с помощью префиксов).

Files::getTempFolderDir($folderName)

  • Возвращает абсолютный путь в файловой системе к временной папке, если такая существует.
  • $folderName — имя папки, заданное ранее с помощью метода Files::makeTempFolder().

Пример: $tempDir = Files::getTempFolderDir($folderName)

Files::makeDirIfNotExists($dr, $mode=0755)

Метод создает папку, если ее нет.

  • Возвращает true, если папка успешно создана или уже существовала.
  • $dr — путь к папке.
  • $mode — режим доступа к папке (число в восмеричной системе, то есть предваряется нулем), по умолчанию: 0755. Пример Files::makeDirIfNotExists('templates/myimages', 0777);

Files::smartCopy($srcFile, $dstFile, $options)

Копирует файл и автоматически создает все папки файлового пути. Если в конечной папке такой же файл уже существует, имя нового файла будет изменено.

  • Возвращает имя нового файла или false.
  • $srcFile — абсолютный путь к исходному файлу.
  • $dstFile — абсолютный путь нового файла.
  • $options — массив опций. Ниже приведены опции по умолчанию:
    $options = [
        'move'=>false, # Не копирование, а перемещение файла
        'dstDir'=>null, # Абсолютный путь конечной папки нового файла
        'dstFilename'=>null, # Имя нового файла
        'dst-dir-mode'=>0755, # Режим доступа к конечной папке
        'dst-file-mode'=>null, # Режим доступа к новому файлу    
    ];
    

    Для булевых опций можно применять короткую форму записи. Подробности см. в описании метода Arr::formatOptions(), который и применен внутри описываемого метода.

Если заданы опции 'dst-dir' и 'dst-file-name', второй параметр $dstFile можно не использовать, заметив его на пустую строку, так как $dstFile = $options['dst-dir'].'/'.$options['dst-file-name'];

Files::unLink($fl, $delDirs=null)

Удаляет файл $fl.

  • Возвращает true, если файл удалился.
  • $fl — путь к файлу.
  • $delDirs — массив папок, которые можно удалить, если после удаления файла они окажутся пустыми. Чтобы это относилось к любой папке, пишите: $delDirs=true.

Files::uniquizeFilename($dst, $name, $ext)

Превращает имя файла в уникальное для помещения в указанный каталог. Если в каталоге уже существует файл с таким именем, то к имени без расширения добавляется дефис и инкрементное число.

  • Возвращает новое имя файла без расширения.
  • $dst — папка, в которую предполагается поместить файл.
  • $name — первоначальное имя файла без расширения.
  • $ext — расширение имени файла.

Files::glob($pattern, $flags=0)

Рекурсивный аналог функции glob(), то есть, находит пути и во вложенных папках.

  • Возвращает одномерный массив путей.
  • $pattern — шаблон.
  • $flags — флаги.
Пример:
$files = Files::glob(Blox::info('templates', 'dir').'/*.tpl');