Yii 1.1.14 RC

от автора

Вышел кандидат в релизы PHP фреймворка Yii 1.1.14. Забрать можно с GitHub.

Исправлены более 80 ошибок, добавлено более 60 небольших улучшений и новых возможностей. Появился новый класс
CPasswordHelper, который предоставляет надёжный метод хранения и проверки хешей паролей. Также добавлен CRedisCache,
с помощью которого можно использовать Redis для хранений кеша. Yii может быть установлен как
пакет Composer. Полный список изменений дан
в changelog.

Значительную часть изменений сделали члены сообщества: creocoder, tom—, paystey, Ragazzo, antoncpu, Yiivgeny и другие,
за что им огромное спасибо.

Так как это кандидат в релизы (RC), не стоит использовать его на боевых серверах. Стабильный релиз 1.1.14 будет достпен в
течение нескольких недель, а пока мы будем очень признательны, если вы проверите RC и
сообщите нам об ошибках
. Заранее спасибо.

Ну а теперь рассмотрим главные улучшения.

Новый класс CPasswordHelper

CPasswordHelper предоставляет надёжный метод хранения и проверки хешей паролей. Использовать его очень просто:

// генерируем хеш, который затем будет сохранён в БД. $password приходит из формы регистрации $hash = CPasswordHelper::hashPassword($password);  // $hash — это то, что мы сохраняли в БД, $password приходит из формы логина if (CPasswordHelper::verifyPassword($password, $hash)   // всё хорошо else   // неправильный пароль 

Новый метод CDbCommandBuilder::createMultipleInsertCommand()

При помощи CDbCommandBuilder::createMultipleInsertCommand() стало возможным вставить несколько записей за один запрос:

$builder=Yii::app()->db->schema->commandBuilder; $command=$builder->createMultipleInsertCommand('tbl_post', array(   array('title' => 'record 1', 'text' => 'text1'),   array('title' => 'record 2', 'text' => 'text2'), )); $command->execute(); 

CRedisCache

Теперь приложение можно сконфигурировать для хранения кеша в Redis. Делается через `protected/config/main.php`:

array(   // ...   'components'=>array(     'cache'=>array(       'class'=>'CRedisCache',       'hostname'=>'localhost',       'port'=>6379,       'database'=>0,     ),   ), ) 

Установка Yii как пакет Composer:

Yii теперь можно установить через Composer. Для этого необходимо добавить
следующее в composer.json.

"yiisoft/yii": "dev-master" 

Отлогинование пользователя после определённого времени

Если вам необходимо отлогинить пользователя через определённое время вне зависимости от его активности, сделать это
можно так:

  // ...   'components'=>array(     'user'=>array(       // ...       'absoluteAuthTimeout' => 60*60*24;     ),   ), ) 

Поддержка RANGE при отдаче файлов

При использовании CHttpRequest::sendFile Yii теперь верно отвечает на RANGE запросы, то есть конечный пользователь
получает большую скорость при скачивании в несколько потоков.

Использование through с BELONGS_TO

Опция «through» теперь может использоваться с CActiveRecord::BELONGS_TO. Подробнее об этом
написано в полном руководстве.

Выборочное логирование глобальных переменных

CLogFilter::$logVars теперь принимает массив массивов, в котором можно указать, что именно логировать из $GLOBALS:

	'components'=>array( 		'log'=>array( 			'class'=>'CLogRouter', 			'routes'=>array( 				array( 					'class'=>'system.logging.CWebLogRoute', 					'filter'=>array( 						'class'=>'system.logging.CLogFilter', 						'logVars'=>array( 							'_COOKIE', // старый синтаксис, < 1.1.14 							array('_SERVER','REMOTE_ADDR'), // новый синтаксис, >= 1.1.14 							array('_SERVER','HTTP_USER_AGENT'), // новый синтаксис, >= 1.1.14 						), 					), 				), 			), 		), 	), 

Приведённая выше конфигурация даст в логе следующее:

$_COOKIE=array (   '__utma' => '111872281.473431406.1366046648.1366046648.1366046648.1',   '__utmz' => '111872281.1366046648.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)',   'cartVisible' => '1',   '96ab4aec0c2977c9b793d4ba009eb3ce' => '...',   'PHPSESSID' => 'vb8pk7obs3q2lc7bl8ield7si7', )  $_SERVER.REMOTE_ADDR='::1'  $_SERVER.HTTP_USER_AGENT='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0' 

Новый CLocalizedFormatter

Новый класс CLocalizedFormatter позволяет форматировать значения в соответствии с текущей локалью:

'components'=>array( 	'format'=>array( 		'class'=>'system.utils.CLocalizedFormatter', 		'locale'=>'en_US', 	), 	'germanFormat'=>array( 		'class'=>'system.utils.CLocalizedFormatter', 		'locale'=>'de_DE', 	), 	'russianFormat'=>array( 		'class'=>'system.utils.CLocalizedFormatter', 		'locale'=>'ru_RU', 	), ),  
echo Yii::app()->format->formatDatetime(time()) . "\n"; echo Yii::app()->germanFormat->formatDatetime(time()) . "\n"; echo Yii::app()->russianFormat->formatDatetime(time()) . "\n";  // Jul 7, 2013 9:34:56 PM // 07.07.2013 21:34:56 // 07.07.2013, 21:34:56 

Генерация названий полей из комментариев БД

Gii теперь может использовать комментарии к полям таблицы в качестве названий полей генерируемой модели. К примеру,
если таблицу создать следующим образом:

CREATE TABLE `tbl_user` (   `id`  int(11) NOT NULL AUTO_INCREMENT,   `first_name` varchar(100) NOT NULL COMMENT 'Имя:',   `last_name` varchar(100) NOT NULL COMMENT 'Nachname:',   `title` varchar(50) NOT NULL COMMENT 'Title (e.g. Mr., Mrs., etc.):',   PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1; 

То сгенерированный метод attributeLabels будет следующим (если выбрать «Use Column Comments as Attribute Labels» в Gii):

/**  * @return array customized attribute labels (name=>label)  */ public function attributeLabels() { 	return array( 		'id' => 'ID', 		'first_name' => 'Имя:', 		'last_name' => 'Nachname:', 		'title' => 'Title (e.g. Mr., Mrs., etc.):', 	); }  

Новые методы в CSecurityManager

В CSecurityManager добавлены:

* CSecurityManager::generateSessionRandomBlock(): генерирует случайную последовательность байт на основе текущей сессии
пользователя.
* CSecurityManager::generatePseudoRandomBlock(): улучшенная альтернатива mt_rand().
* CSecurityManager::generateRandomBytes(): генерирует случайные бинарные данные. Криптостойкость задаётся вторым
аргументом. Стоит отметить, что генерация довольно медленная.
* CSecurityManager::generateRandomString(): генерирует случайную строку. Криптостойкость задаётся вторым аргументом.
Стоит отметить, что генерация довольно медленная.

ссылка на оригинал статьи http://habrahabr.ru/post/186596/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *