![]() ![]() ![]()
Какой рейтинг вас больше интересует?
|
![]()
Yii 1.1.82011-06-27 00:08:06 (читать в оригинале)Вышел релиз Yii 1.1.8, включающий более 80 багфиксов, новых возможностей и улучшений. Огромное спасибо тем, кто репортил баги, предлагал новые фичи и использовал по назначению Orphus на yiiframework.ru. Забрать свежий дистрибутив можно с официального сайта. Инструкции по обновлению можно почитать в UPGRADE. Полный список изменений, как обычно, можно прочитать в CHANGELOG, мы же бегло рассмотрим самое интересное. Свои классы для правил URLДля сложной работы с URL, с которой не может справится стандартный класс array( // стандартное правило '/login' → 'site/login' и т.д. '<action:(login|logout|about)>' => 'site/<action>', // нестандартное правило для '/Производитель/Модель' array( 'class' => 'application.components.CarUrlRule', 'connectionID' => 'db', ), // стандартное правило для 'post/update' '<controller:\w+>/<action:\w+>' => '<controller>/<action>', ), Сам класс при этом наследуется от class CarUrlRule extends CBaseUrlRule { public $connectionID = 'db'; public function createUrl($manager,$route,$params,$ampersand) { if ($route==='car/index') { if (isset($params['manufacturer'], $params['model'])) return $params['manufacturer'] . '/' . $params['model']; else if (isset($params['manufacturer'])) return $params['manufacturer']; } return false; // не применяем правило } public function parseUrl($manager,$request,$pathInfo,$rawPathInfo) { if (preg_match('%^(\w+)(/(\w+))?$%', $pathInfo, $matches)) { // совпадают ли $matches[1] и $matches[3] с // производителем и моделью в базе? // если да, выставляем $_GET['manufacturer'] и/или $_GET['model'] // и возвращаем 'car/index' } return false; // не применяем правило } } Улучшенный автозагрузчик классовВ Yii уже есть загрузчик классов, подключающий их как только они потребуются. Теперь он не конфликтует со сторонними загрузчиками и может выполняться как до них, так и после. В предыдущих версиях он всегда выполнялся после сторонних автозагрузчиков, что приводило к лишним вызовам при использовании классов Yii: // По умолчанию сторонний загрузчик регистрируется до загрузчика Yii Yii::registerAutoloader($autoloader); Теперь можно делать так: // При передаче true вторым параметром сторонний автозагрузчик добавляется после загрузчика Yii Yii::registerAutoloader($autoloader, true); По умолчанию автозагрузчик Yii использует PHP include path. Для некоторых хостингов это является проблемой, решить которую можно немного поправив require('path/to/yii.php'); // отключаем PHP include path Yii::$enableIncludePath = false; Yii::createWebApplication($config)->run(); Логирование в режиме реального времениНекоторые консольные приложения могут работать очень долго. Для них полезно писать сообщения в лог сразу, а не ждать завершения приложения: // автоматически передаём каждое сообщение роутеру лога Yii::getLogger()->autoFlush = 1; // автоматически пишем сообщения при получении логгером Yii::getLogger()->autoDump = true; Работаем со счётчиками в БД через ARВ классе $post = Post::model()->findByPk(1); // наращиваем количество просмотров поста $post->saveCounters(array('views'=>1)); // то же для прошлый версий Post::model()->updateCounters(array('views'=>1), 'id=1'); Генерация файлов переводовПри использовании Создание URL в консольных приложенияхВ веб-приложениях для генерации URL обычно используется В clips теперь можно использовать параметрыЭто полезно в том случае, когда кусок кода в view повторяется много раз, но он недостаточно сложен для выноса его в отдельный файл: // определяем clip <?php $this->beginClip('hello') <p>Привет, {username}!</p> <?php $this->endClip() <?php // используем clip <?php $this->renderClip('hello',array( '{username}'=>'Qiang', )) <?php $this->renderClip('hello',array( '{username}'=>'Alex', )) <?php $this->renderClip('hello',array( '{username}'=>'Michael', )) Анонс на хабре
|
![]() ![]() ![]()
Категория «Мультипликация»
Взлеты Топ 5
Падения Топ 5
![]()
Популярные за сутки
|
Загрузка...

взяты из открытых общедоступных источников и являются собственностью их авторов.