Обзор дополнения CFile
Рубрика: Мелкие заметки на тему Yii
26 Окт. 2009Мы постоянно совершенствуем свои приложения позволяя пользователям загружать свои документы, аватарки и др. Хочешь упростить все эти функции? Читай обзор нового Yii дополнения!
---Вчера пользователь idle опубликовал расширения для упрощения работы с файлами. Теперь вы можете легко изменять права на файл (chmod), проверять его существование, копировать и многое другое!
Доступные свойства:
- exists
- readable (доступно с версии 0.2)
- writeable (доступно с версии 0.2)
- realpath
- basename
- filename
- dirname
- extension
- mimeType
- timeModified
- size
- owner (может быть установлено)
- group (может быть установлено)
- permissions (может быть установлено)
Доступные методы:
- Copy
- Create (доступно с версии 0.2)
- Contents (чтение & запись, доступно с версии 0.2)
- Rename/Move
- Delete
Установка
Подключение дополнения CFile ничем не отличается от подключения остальных.
- Первым делом заходим на страницу http://www.yiiframework.com/extension/cfile/ (во вкладку Download) и загружаем последнюю версию
- Распакуйте архив в папку protected/extensions/file вашего Yii приложения
- Откройте конфигурационный файл (по умолчанию config/main.php) и добавляем туда:
'components'=>array(
...
'file'=>array(
'class'=>'application.extensions.file.CFile',
),
...
),
Теперь Вы можете получить доступ к методам CFile следующим образом:
$myfile = Yii::app()->file->set('files/test.txt', true);
/*
Мы используем метод set() для связки объекта CFile с файлом.
Первый парраметр в set() - 'files/test.txt' - это путь к фалу (мы используем относительный путь, который автоматически преобразуется в реальный /var/www/htdocs/files/test.txt).
Второй параметр в set() - значение true - требует получить все свойства файла в самом начале (вы можете не использовать этот параметр если вам не нужны все свойства)
$myfile содержит объект CFile, давайте посмотрим что у нас там:
*/
var_dump($myfile); // дамп обьекта со всеми свойствами
echo $myfile->size; // можем получить свойство
$myfile->permissions=755; // или установить его
$mynewfile = $myfile->copy('files/test2.txt'); // или проводить манипуляции с файлом (к примеру, копировать его). теперь $mynewfile содержит новый обьект CFile
/* Вы можете использовать такой подход тоже */
if (Yii::app()->file->set('files/test3.txt')->exists)
echo 'Все окей!';
else
echo 'Ошибка((';
Более детальное описание всех методов и свойств автор рекомендует посмотреть в исходном коде самого класса.
Примеры использования кода были взяты из официальной документации дополнения.
Если хотите опубликовать этот материал у себя - пожалуйста, разместите ссылку на страницу откуда вы его взяли.
- Такое слово как интернационализация (i18n) я думаю, приходилось слышать каждому программисту при разработке серьезных сайтов. Все мы рано или ... "Интернационализация в Yii"
- Если честно я немного подглядел список изменений которые уже были сделаны и решил опубликовать их для вас. Скорее всего изменения ... "Что нас ждет в 1.0.6?"
- ... "Перевод : Доработка модели Post"

[adm] zolter
Было сказано: Понедельник, 26 Октябрь 2009
Сегодня появилась версия 0,2! Включает в себя еще более интересные функции для работы с файлами. Расширение теперь также доступно на страницах гугл кода - http://code.google.com/p/ist-yii-cfile/

[guest] idle sign
Было сказано: Понедельник, 26 Октябрь 2009
Тимур, только не "config/mail.php" а "config/main.php".
А переводна русский неплох, да :)

[guest] Romanoza
Было сказано: Понедельник, 26 Октябрь 2009
Yii::app()->file->set('files/test3.txt')->existsжесть :))

[guest] idle sign
Было сказано: Понедельник, 26 Октябрь 2009
@zolter
И все-таки («since» это не «для»).
И, zolter, если можно, пусть тот синий квадрат вверху страницы справа не говорит людям «Привет, Guest», а говорит, например «Привет, человек» (за это ответит параметр 'guestName' массива 'user', массива 'components' конфигурации приложения).
@Romanoza
Смягчи жесть импортом и "CFile::set('files/1.htm')->exists".
Есть предложения как сделать еще короче, не вшивая в сам Yii? Внимательно слушаю.

[adm] zolter
Было сказано: Понедельник, 26 Октябрь 2009
Просто мне кажется выражение "доступно с версии 0.2" не очень красиво звучит. А "для" весьма понятно, учитывая что версий выше нету.
п.с. как заменить Guest на другое слово я в курсе ;)

[guest] Igor
Было сказано: Вторник, 27 Октябрь 2009
echo $myfile->size; // можем получить свойство
$myfile->permissions=755; // или установить его
Для установки значений есть методы set***()
В данном примере:
$myfile->setPermissions(0755);


