freedev.asia Свободное програмное обеспечение, для свободных людей!

26Май/101

Работа с файлами в CakePHP

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

И так, начнем...

Работа с данными

Выполнение практически всех действий с файлами подразумевает первоначальное создание объекта File.

if (!class_exists('File')) {
require LIBS . 'file.php';
}
$my_file = new File($filename, true);

После чего мы можем работать с файлом $filename через переменную $my_file.

Первое что нам может понадобится, это записать данные в файл. Для этого есть как минимум две функции: append и write. Первая из них позволяет дописать данные в файл, а вторая позволяет как дописать, так и переписать файл, все зависит от переданных параметров.

append ( $data, $force = false )

где,
$data - это данные которые вы хотите добавить в файл;
$force - если файл открыт, то заставляет его открыться заново, иначе, используется уже существующий дескриптор.

Пример:

$my_file = new File('test.text', true);
$my_file->append('Hello world!');

write( $data, $mode = 'w', $force = false )

где,
$data - это данные которые вы хотите добавить в файл;
$mode - параметры которые используются при открытие файла в PHP функции fopen.
$force - если файл открыт, то заставляет его открыться заново, иначе, используется уже существующий дескриптор.

Причем, если не существует директории для файла, то она автоматически создается.

Пример:

$my_file = new File('test.text', true);
$my_file->write('В этом файле только одна строка');

Хорошо, а как прочитать нам записанные данные? Для этого есть функция read.

read( $bytes = false, $mode = 'rb', $force = false )

где,
$bytes - количество байт которые необходимо считать, если false, то файл считается целиком;
$mode - параметры которые используются при открытие файла в PHP функции fopen.
$force - если файл открыт, то заставляет его открыться заново, иначе, используется уже существующий дескриптор.

Пример:

//Вывести содержимое файла

$my_file = new File('test.text', true);
echo $my_file->read();

Пример:

//Вывести первые 50 символов

$my_file = new File('test.text', true);
echo $my_file->read(50);

Если нам потребуется удалить файл, то в этом случае нам поможет функция delete.

Пример:

$my_file = new File('test.text', true);
$my_file->delete();

Так же, хотелось бы отметить, что после работы с файлами, желательно закрывать их дискрипторы с помощью функции close.

Пример:

$my_file = new File('test.text', true);
echo $my_file->read();
$my_file->close();

Информация о файле

Проверка существования файла осуществляется с помощью функции exists.

Пример:

$my_file = new File('test.text', true);
if ($my_file->exists()) echo 'Файл существует';

else echo 'Такого файла нет';

Далее я просто перечислю все функции которые возвращают логическое значение:

executable() - выполняемый ли файл;

readable() - можно ли читать этот файл;

writable() - можно ли писать в файл.

С помощью функции info можно получить информацию о расположение, имени и типе файла. Функция возвращает массив со следующими ключами:

  • dirname - каталог, в котором размещается файл;
  • basename - полное имя файла;
  • extension - расширение файла;
  • filename - имя файла (без расширения).

Пример:

$my_file = new File('/var/www/app/webroot/css/style.css', true);
pr( $my_file->info());

/*
Array
(
    [dirname] => /var/www/app/webroot/css
    [basename] => style.css
    [extension] => css
    [filename] => style
)
*/
Для проверки времени последнего обращения или изменения файла, используются функции lastAccess и lastChange соответственно.
Пример:
$my_file = new File('/var/www/app/webroot/css/style.css', true);
echo 'Последний раз файл просматривали: ' . date('Y-m-d H-i-s', $my_file->lastAccess());
echo 'Последний раз файл изменяли: ' . date('Y-m-d H-i-s', $my_file->lastChange());
И на последок, функция расчета контрольной суммы файла md5.
Пример:
$my_file = new File('/var/www/app/webroot/css/style.css', true);
echo 'Крнтрольная сумма: ' . $my_file->md5();
Комментарии (1) Пинги (0)
  1. первой строкой при поиске в гугле!! круто! блог процветает! ;)


Leave a comment

Нет обратных ссылок на эту запись.