Сегодня рассмотрим класс для работы с папками в 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)