Как стать автором
Обновить

Yii 1.1.16

Время на прочтение4 мин
Количество просмотров14K
Вышел релиз 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.
Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 18: ↑16 и ↓2+14
Комментарии20

Публикации

Истории

Работа

PHP программист
107 вакансий

Ближайшие события

19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн