Pull to refresh

Yii 1.1.16

Reading time4 min
Views14K
Вышел релиз 1.1.16 PHP-фреймворка Yii. Вы можете скачать его по адресу yiiframework.com/download/.

В данный релиз вошло более 120 улучшений и исправлений. Полный список изменений можно посмотреть здесь. Внимание: не все изменения совместимы с предыдущей версией. Внимательно прочитайте инструкции по обновлению.

Спасибо всем, кто нам помогал и без кого этот релиз бы не состоялся.

Отметим, что Yii 1.1 перешёл в режим поддержки, то есть не стоит ждать каких-либо новых возможностей или больших изменений в будущем. В данный момент мы активно разрабатываем и поддерживаем Yii 2.0, в котором используются свежие технологии. Следить за развитием Yii 2 можно поставив звёздочку или нажав на кнопку «watch» на странице проекта на GitHub. Присоединяйтесь к нашим Twitter и Facebook.

Далее мы расскажем о главных улучшениях.



База данных и ActiveRecord



Поддержка баз данных улучшается постоянно. На этот раз мы добавили поддержку MariaDB и CUBRID.

ODBC теперь можно использовать через pdo_odbc:

'components'=>array(
    ......
    'db'=>array(
        'class'=>'CDbConnection'
        'driverName'=>'mysql',
        'connectionString'=>'odbc:Driver={MySQL};Server=127.0.0.1;Database=test',
        'username'=>'',
        'password'=>'',
    ),
),


При задании связей типа STAT можно использовать именованные группы параметров:

public function relations()
{
    return array(
        'recentPostCount'=>array(self::STAT,'Post','author_id','scopes'=>'recentScope'),
    );
}


Теперь в реляционных запросах можно задать операции, применяемые после JOIN (то есть use|force|ignore index()):

$users=User::model()->findAll(array(
    'select'=>'t.id,t.name',
    'with'=>array(
        'posts'=>array(
            'alias'=>'p',
            'select'=>'p.id,p.title',
            'joinOptions'=>'USE INDEX(post__user)',
        ),
    ),
));


Подробнее можно почитать в разделе «Post-JOIN operations» в главе «Relational Active Record» полного руководства.

Были добавлены CDbCommand::naturalLeftJoin() и CDbCommand::naturalRightJoin(), которые позволяют использовать соответствующие типы join.

Стало возможным перекрыть первичный ключ модели через метод primaryKey() даже в том случае, если в таблице есть первичный ключ.

Файлы



В CFileHelper добавлены новые методы:

  • createDirectory() — создаёт директорию, выставляя рекурсивно права.
  • getExtensionByMimeType() — определяет расширение файла по типу MIME.


Определение MIME типа было улучшено использованием файла mime.types из Apache HTTP.

CFileHelper::removeDirectory() теперь нормально работает с символическими ссылками на директории. Сделать «как было» можно передав ключ traverseSymlinks со значением false в массиве опций.

В CFileHelper::findFiles() добавлена новая опция absolutePaths. Если её выставить в
true, метод будет возвращать абсолютные пути. true является значением по умолчанию.

В CFileCache добавлены свойства cachePathMode и cacheFileMode, которые могут быть использованы для выполнения chmod() соответствующих директорий.

Обновления



Несколько библиотек, используемых фреймворком, были обновлены:

  • jQuery до 1.11.1.
  • jQuery UI до 1.11.2.
  • Плагин Multifile, используемый CMultiFileUpload до 1.48.
  • HTMLPurifier до 4.6.0.
  • Данные для i18n до CLDR23.1, в которой были добавлены новые локали, больше данных и есть важные исправления.


HTML5



Когда мы выпустили первую версию Yii 1.1, фактическим стандартом разметки был XHTML. Теперь же
это HTML5, поэтому мы решили обновить шаблон приложения, генерируемый при помощи yiic webapp до HTML5.

CHtml и CActiveForm получили поддержку полей ввода HTML5, таких как color, datetime, datetime-local, week и search.

Совместимость



Различные инструменты и библиотеки, часто используемые с Yii, были обновлены, так что мы обновили фреймворк для их поддержки.

  • CApcCache теперь совместим с APCu.
  • Yii::import() и Yii::createComponent() теперь совместимы со сторонними автозагрузчиками классов, такими как загрузчик Composer.
  • Yii и YiiBase были добавлены в автозагрузку в composer.json.
  • Тесты теперь нормально работают с PHPUnit 3.8+.


Request



Request научился работать с заголовком X-HTTP-Method-Override, используемым для эмуляции различных типов запроса через POST.

Новые методы getIsPatchRequest(), getIsPatchViaPostRequest() и getPatch() позволяют работать с запросами типа PATCH.

Фреймворк теперь отвечает с той же версией протокола HTTP, которая содержалась в запросе.

Request::getPreferredLanguage() теперь может выбирать лучший вариант в зависимости от поддерживаемых и запрашиваемых языков.

Обработка ошибок



Обработка ошибок была улучшена.

  • Объект исключения теперь доступен через ErrorHandler::getException(), что делает возможным его передачу различным сторонним API.
  • Добавлена поддержка записи логов в Syslog.
  • CClientScript теперь кидает исключение, если вы пытаетесь зарегистрировать несуществующий пакет.
  • В CActiveForm::$clientOptions добавлен errorCallback. Теперь вы можете вклиниться в процесс клиентской валидации.


И ещё немного



  • В веб-сервисы добавлена поддержка заголовков SOAP и кодирование document/literal.
  • CJSON теперь умеет использовать JsonSerializable.
  • CHtml::beginForm() научился работать с дополнительными методами HTTP через скрытое поле _method.
  • CPasswordHelper::generateSalt() теперь возвращает соль с cost = $2y$.
CFormatter научился работать с DateTime.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+14
Comments20

Articles