...

понедельник, 15 июля 2013 г.

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(): генерирует случайную строку. Криптостойкость задаётся вторым аргументом.

Стоит отметить, что генерация довольно медленная.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


Комментариев нет:

Отправить комментарий