Работа с папками, класс JFolder
Сегодня рассмотрим класс для работы с папками в Joomla Framework.
Данный класс нам позволит выполнять копирование, перемещение, удаление файлов и не только!
Для начала использования этого класса подключим его в наш скрипт:
jimport( 'joomla.filesystem.folder' );
Так же как и для класс JFile для класса JFolder не обязательно объявлять объект
Основные функции:
JFolder::copy( $src, $dest, $path = '', $force = false );- метод для копирования папки и её содержимого!
Параметры метода:
$src - путь из которого копировать папку
$dest - куда копировать папку
$path - добавляет к в начало $src и $dest путь укатанный в этих переменных
$force - принудительное копирование. То есть при совпадении имен файлов и папок в директории $dest эти файлы будут принудительно заменены на файлы в из копируемой директории $src
JFolder::create( $path = '', $mode = 0755 );- создает папку по пути указанному в переменной $path с правами $mode (по умолчанию устанавливаются права 0755)
JFolder::delete( $path );- удаляет папку по пути указанному в переменной $path
JFolder::exists( $path );- проверяет или существует папка указанная в пути $path вернет true если папка существует
JFolder::files($path, $filter = '.', $recurse = false, $full = false, $exclude);- получает список файлов в директории!
Параметры метода:
$path - путь по которому выбирать список файлов
$filter - фильтр файлов
$recurse - елси установить значение в true то будет рекурсивный обход всех папок внутри папки $path
$full - если установить значение в true то к имени файла будет добавлен путь по которому он располагается
$exclude - массив в котором передаются типы файлов которые не выбирать
Для примера выберем все jpg и png файлы из папки images и всех подпапок этой папки, также укажем полный путь к файлу:
$files = JFolder::files( JPATH_BASE . DS . 'images', '\.jpg|\.png$', true, true );
JFolder::folders($path, $filter = '.', $recurse = false, $full = false, $exclude);- получает список файлов из указанной папки!
Параметры метода:
$path - путь по которому выбирать список папок
$filter - фильтр
$recurse - если установить значение в true то будет рекурсивный обход всех папок внутри папки $path
$full - если установить значение в true то к имени папки будет добавлен путь по которому она располагается
$exclude - массив в котором передаются типы папок которые не выбирать
Для примера выберем все папки из папки images c отображением пути к папкам:
$folders = JFolder::folders( JPATH_BASE .'/images', '.', true, true );
$folders = JFolder::listFolderTree( $path, $filter );- возвращает дерево папко из папки указанной в пути $path.
Данная функция вернет массив элементами которого будет такой ассоциированный массив:
[0] => Array ( [id] => 1 [parent] => 0 [name] => avatars [fullname] => E:\server\apache\htdocs\work\wss\images\avatars [relname] => \images\avatars )
В элементах этого массива будет указание родительской категории, ключ id это идентификатор текущей категории для того что бы на её могли ссылаться дочернии категории!
JFolder::move( $src, $dest, $path = '', $force = false );- методя для перемещения папок и их содержимого!
Параметры метода:
$src - путь из которого перемещать папку
$dest - куда перемещать папку
$path - добавляет к в начало $src и $dest путь указанный в этих переменных
$force - принудительное перемещение. То есть при совпадении имен файлов и папок в директории $dest эти файлы будут принудительно заменены на файлы в из копируемой директории $src
Так же читайте Работа с файлами в Joomla (Класс JFile)