Системные функции. Работа с файлами и директориями

Группа системных функций, определенная в файле engine/include/functions/File.php и предназначенная для работы файлами, директориями и преобразования путей. Многие из функции похожи на на стандартные PHP-функции (в т.ч. и по названию), но обладают гораздо более широкими возможностями.
Работа с директориями
bool CheckDir($sDir, $bAutoMake = true, $nMask = 0755)
Проверяет существование папки (директории), заданной аргументом $sDir. Если ее не существует и задан аргумент $bAutoMake, то делается попытка ее создать с заданными в $nMask правами.

Возвращает TRUE, если директория существует или успешно создана, и FALSE в противном случае.

bool CheckLocalDir($sLocalDir, $bAutoMake = true, $nMask = 0755)
Делает то же, что CheckDir, только в качестве аргумента пути к директории задается локальный путь от корневой директории сайта. Например, если полный путь к директории вашего сайта /var/www/user/site.com/, то две эти команды будут выполнять одно и то же — проверять наличие директории /uploads/, и, если ее нет, то попробуют ее создать:
CheckDir('/var/www/user/site.com/uploads/');
CheckLocalDir('uploads/');


bool RemoveDir($sDir)
Рекурсивное удаление директории. В отличии от PHP-функции rmdir() удаляет директорию, даже если внутри нее есть файлы и другие директории.

bool ClearDir($xDir, $bSafe = true)
Очищает папку — удаляет ее содержимое. В $xDir передается либо полный путь к удаляемой папке, либо массив папок, которые требуется очистить.
$bSafe задает «бережный» режим очищения, когда структура папки остается (т.е. сохраняются все ее подпапки), а удаляется только файлы.

array ReadDir($sDir, $nFlag = 0, $bRecursively = false)
Читает и возвращает содержимое папки, включая скрытые файлы и поддиректории, но исключая при этом из списка псевдодиректории «.» и «..». Аргумент $nFlag аналогичен соответствующему аргументу PHP-функции glob(). Если аргумент $bRecursively задан как TRUE, то выполняется рекурсивное чтение, т.е. в результат будут добавлены также содержимое всех поддиректорий.

array ReadFileList($sDir, $nFlag = 0, $bRecursively = false)
Работает аналогично ReadDir, но возвращает только имена файлов, имена поддиректорий исключаются из выдачи.

bool CopyDir($sDirSrc, $sDirTrg)
Копирует все содержимое из одной директории (включая ее поддиректории) в другую. Если целевой директории не существует, то будет предпринята попытка ее создать

Преобразование путей
string Dir2Url($sDir)
Преобразует путь к директории на сервере в URL

string Url2Dir($sUrl, $sSeparator = '/')
Преобразование URL к директории на сервере

string LocalPath($sPath, $xRoot)
Из абсолютного пути выделяет локальный, относительно корня. Причем, это может быть как путь к директории на сервере, так и URL

string LocalDir($sPath)
Из абсолютного пути к директории на сервере выделяет локальный относительно корневой директории проекта

string LocalUrl($sPath, $bCheckAliases = true)
Из абсолютного URL выделяет локальный путь относительно URL сайта. Аргумент $bCheckAliases указывает, нужно ли при этом учитывать алиасы веб-адреса сайта.

bool IsLocalDir($sPath)
Проверяет, лежит ли переданный абсолютный путь внутри корневой директории сайта

bool IsLocalUrl($sPath)
Проверяет, соответствует ли переданный путь веб-адресу сайта

string|bool InPath($sNeedle, $aPaths)
Проверяет, соответствует ли строка, передаваемая в $Needle, одной из заданных масок путей. Возвращает ту маску, которой соответствует или FALSE, если не соответствует ни одной. Например:
F::File_InPath('blog/topic', 'blog/*'); // вернет 'blog/*'
F::File_InPath('blog/topic', array('blog/', 'blog/*', 'blog/article')); // вернет 'blog/*'
F::File_InPath('blog/topic', 'blog/'); // вернет FALSE


Работа с файлами
string|bool Exists($sFile, $aDirs = array())
В отличие от PHP-функции file_exists() проверяет именно наличие файла, не папки. Если второй аргумент не задан, то в первом аргументе должен быть абсолютный путь к проверяемому файлу. Если во втором аргументе задан путь к директории, то в первом должен быть задан относительный путь к файлу внутри этой директории. Во втором аргументе также может быть задан массив с директориями, тогда в первом аргументе также задается относительный путь к файлу и проверка выполняется до первого нахождения.

Функция возвращает полный путь к файлу, если он существует и FALSE в противном случае.
F::File_Exists('c:\dir\file.txt'); // проверка существования файла 'c:\dir\file.txt'
F::File_Exists('file.txt', 'c:\dir\'); // проверка существования файла 'file.txt' в папке 'c:\dir\'
F::File_Exists('file.txt', array('c:\dir\', 'd:\test')); // проверка наличия файла 'file.txt' в одной из папок
В последнем варианте, если файл существует в обоих папках, то функция вернет полный путь к первому из них, т.е. 'c:\dir\file.txt'.

string|bool Copy($sSource, $sTarget, $bRewrite = false)
Копирование файла. В отличии от аналогичной стандартной PHP-функции, если целевая директория не существует, то будет предпринята попытка ее создать.

Возвращает полный путь к целевому файлу или FALSE если операция прошла неудачно.

bool Delete($sFile, $bRecursively = false, $bNoCheck = false)
Удаление файла. Если задан второй аргумент, то файл с заданным именем будет удален во всех поддиректорях, начиная с той, в которой расположен удаляемый файл.

bool DeleteAs($sPattern, $bRecursively = false, $bNoCheck = false)
Аналогично Delete(), но имя файла может задаваться с помощью маски. Например:
DeleteAs('c:\dir\file*.txt'); // будут удалены файлы и file.txt, и file01.txt, и file_abc.txt, и т.д.


string|bool Move($sSource, $sTarget, $bRewrite = false)
Перемещение файла. Файл сначала коипруется в целевую директорию, а потом файл источник удаляется.

Возвращает полный путь к целевому файлу или FALSE если операция прошла неудачно.

string|bool MoveUploadedFile($sUploadedFile, $sFileName = null)
Перемещение загруженного файла по заданному пути. Выполняется только в том случае, если исходный файл действительно был загружен (для проверки используется функция is_uploaded_file(), а для перемещения — move_uploaded_file()).

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

Возвращает полный путь к целевому файлу или FALSE если операция прошла неудачно.

string|bool GetContents($sFile)
Аналогично PHP-функции file_get_contents, с той лишь разницей, что проверяется наличие файла и если его нет, то будет возвращено значение FALSE и никаких ошибок не генерируется.

integer PutContents($sFile, $sData, $nFlags = 0)
Аналогично PHP-функции file_put_contents(), с той лишь разницей, что если целевой директории нет, то будет предпринята попытка ее создания.

Подключение файлов и библиотек
mixed IncludeFile($sFile, $bOnce = true, $xConfig = false)
Аналогично PHP-команде include, но при этом ведет статистику подключаемых файлов и имеет собственный обработчик ошибок.

mixed IncludeLib($sFile, $bOnce = true)
Аналогична функции Include(). Удобна тем, что самостоятельно определяет пути нахождения библиотек.

mixed IncludeIfExists($sFile, $bOnce = true, $bConfig = false)
Аналогична Include() за тем исключением, что сначала проверяется наличие файла, и если его нет, то не вызывает никаких ошибок, возвращая NULL.

Основной термин: F::File

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.