Первая версия новой ветки Yii фреймворка, что новенького:
— добавлен, основанный на , фреймворк для тестирования. Теперь разработчики могут значительно проще писать Unit-тесты и функциональные тесты.
— добавлен, «конструктор форм», который позволяет создавать HTML-формы при помощи объектов. Это позволяет значительно упростить повторное использование форм.
— добавлена возможность изменять темы оформления (скины) для виджетов.
— сделаны изменения в ActiveRecord, для более простого использования.
Кроме всех этих изменений, разработчики Yii начали работу над новым проектом — «zii», который представляет собой набор официальных расширений Yii. Теперь этот набор будет входить во все последующие версии фреймворка.
Здравствуйте. Сегодня я хочу поделиться с вами концептом расширяемой структуры приложения на Yii Framework.
На оригинальность не претендую, но может быть кому-нибудь будет полезно.
В этой версии исправлено приблизительно 10 ошибок и сделано 20 усовершенствований. В частности была улучшена производительность Active Record, путем исключения ненужных SQL JOIN-ов.
Обновление до версии 1.0.9 должно пройти безболезненно, однако следует обратить внимание на выполнение релационных запросов с «ленивой загрузкой». Благодаря новым изменениям, реляционный запрос не будет объединять связанную таблицу с основной (иными словами join-a происходить не будет, реляционный запрос, по полученному из основной таблицы, первичному ключу, простым «селектом» выберет данные из подчиненной таблицы).
Из вкусненького:
— в класс CActiveRecord добавлен метод onBeforeFind и событие onBeforeFind — вызываемые перед отработкой метода выборки/поиска find() и findAll();
— в класс CDbCriteria добавлен метод addCondition — который позволяет добавлять условия выборки для запроса;
Метод имеет следующий вид:
public void addCondition(mixed $condition, string $operator='AND')
— в класс CDbCriteria добавлено свойство distinct, установив которое в true, запрос вида
Разработчики Yii как всегда пунктуальны. Точно в срок вышла версия 1.0.8 этого фреймворка.
В релиз вошли исправления найденных ошибок, а так же около двадцати улучшений.
Из новенького:
— в компоненты кэширования добавлен метод mget() — для получения нескольких значений из кэша, что позволяет сократить время получения кэшированных данных. Возврат нескольких значений поддерживают APC и MemCache, остальные хранилища кэша эмулируют эту возможность;
— Улучшена встроенная консоль yiic shell, теперь создавать классы, расширяющие ее функционал стало проще;
Мелочь, а приятно:
— При использовании компонента CCAptcha, можно кликать на самом изображении для его замены;
— Добавлены шаблоны ошибок на русском языке;
— Методы bindParam() и bindValues() компонента CDbCommand, возвращают объект «команды», что позволяет объединить их вызовы в цепочку. Пример:
$result = $connection->createCommand('select * from table where id = :id')->bindParam(':id',5,PDO::PARAM_INT)->query();
— В компонент CFormModel и CActiveRecord добавлен метод init() — вызываемый сразу после создания объекта;
При переходе на версию 1.0.8 следует быть осторожным, так как поменялся принцип работы метода Yii::import(). В новой версии, директория импортированная данным методом, имеет больший приоритет чем include path. При возникновении проблем, рекомендуется изменить порядок импорта директорий.
Совсем недавно я писал про свой XSS фильтр для фреймворка Yii. Сегодня хочу рассказать о его новой версии и о том, что собсвенно говоря изменилось. И так…
Вчера вышел очередной релиз фреймворка Yii.
Исправлено свыше десятка ошибок и недочетов, добавлено столько же новых возможностей.
Из новенького:
— при использовании Yii::trace(), появилась возможность выводить в лог информацию о файле и строке, где была вызвана эта функция. Для этого необходимо в файле index.php проекта определить константу YII_TRACE_LEVEL и присвоить ей значение большее чем 0.
Пример вывода:
14:00:02.717571 trace system.web.CModule Loading "request" application component in C:\xampp\htdocs\xomaprojects\yupe\yupe\index.php (16)
— возможность указывать якорь, при использовании CController::redirect();
— возможность «выхода» пользователя с сайта, без уничтожения информации в сессии, не относящейся к авторизации;
И все таки правильно говорят, а на некторых форумах (особенно UNIX-овых), прямо кричат — RTFM! Кто не понял очем идет речь — RTFM в переводе означает «читай эту чертову документацию!». Это все я собственно вот к чему: изучая и что-то пытаясь написать на фреймворке Yii, возникла задача фильтрации входных данных от различного рода «зловредных» символов (аля XSS-атака) и первое что пришло в голову — это написать свой фильтр (что я все таки и сделал), однако creocoder, на форуме Yii, совершенно спрпаведливо заметил, что не зачем изобретать велосипед, все уже есть готовое, необходимо только RTFM! Речь шла о классе CHtmlPurifier, который является оберткой для библиотеки HTML Purifier, и выполняет все те функции, которые мне необходимы (правда я так и не попробывал его в действии, может и зря конечно). Но раз уж я начал писать свой фильтр — решил все таки это дело завершить, да и просто написать статью о фильтрах в Yii.
На официальном форуме Yii нашел интересную . Известное, наверное всем, издательство собирается выпустить (сначала конечно же написать) книгу о PHP-фреймворке Yii.
Пишу одно прлиожение на Yii Framework. Структура приложения такова, что необходимо разграничить экшены контроллеров(CController) по папкам и сделать их типовыми.
Экшены разграничиваются легко.
Предположим, что у нас есть ряд экшенов для администрирования. Всем им надо установить какие-либо свойства или же сделать при их вызове какие-то типовые действия.
Рассмотрим на примере изменения титла страницы.