Yii 2.0.8

Відбувся реліз PHP-фреймворку версії 2.0.8 Yii. Інструкції з оновлення та установки, можна знайти на сторінці
http://www.yiiframework.com/download/.
Версія 2.0.8 містить близько 100 невеликих виправлень і поліпшень, налічує 300 комітів, від 64 авторів і зачіпає 150 файлів.
Для оновлення можуть знадобитися додаткові дії, так що варто звернутися до UPGRADE.md.
Спасибі нашого чудового спільноти за чудові ідеї та pull request-и. Цей реліз відбувся завдяки вам!
За процесом розробки фреймворку можна стежити на GitHub. Також підписуйтесь на наш Twitter і вступайте в групу в Facebook.
Нижче ми розглянемо найцікавіші зміни цього релізу. Повний список змін можна знайти на CHANGELOG.
Сумісність з PHP 7
Yii 2.0.8 отримав кілька виправлень на цю тему. Одне стосується обробки помилок загалом, друге — обробці помилок JSON.
Як ви, швидше за все, вже знаєте, PHP 7 в цьому році стане досить поширеним тому як у свіжій Ubuntu LTS доступна пакетом саме ця версія.
Бази даних і ActiveRecord
Метод для фільтрації провайдера для GridView з Yii 1.1 з'явився в Yii 2.0 у вигляді
yii\db\Query::andFilterCompare()
.
Документація не поспіла. Будемо раді допомоги в її написанні.
У ActiveRecord тепер викликають
EVENT_AFTER_REFRESH
після того, як модель оновлює свої дані з бази.
Схема та міграції
Завдяки спільноті, в цей реліз увійшли поліпшення білдера схеми бази даних, який зазвичай використовують у міграціях.
По-перше, тепер є можливість додавати коментарі таблиць і стовпців. При визначенні стовпця робиться це ось так:
'title' => $this->string()->notNull()->comment('Hello, I am the title!'),

Окремими методами користуватися можна ось так:
$this->addCommentOnTable('user', 'This is a table comment.');
$this->addCommentOnColumn('user', 'name', 'This is a column comment.');
$this->dropCommentFromColumn('user', 'name');
$this->dropCommentFromTable('user');

Стало можливо задати порядок стовпця:
$this->string()->notNull()->first();
$this->string()->notNull()->after('anotherColumn');

Тепер оголошувати unsigned первинні ключі набагато приємніше:
$this->primaryKey()->unsigned()
.
Консольна команда
./yii migrate/create
також була трохи поліпшена. По-перше, з'явилася опція
useTablePrefix
. Якщо її поставити в
true
, будуть генеруватися код з префіксами таблиць.
По-друге, можна генерувати зовнішні ключі через
--fields
:
yii migrate/create create_post --fields="author_id:integer:notNull:foreignKey(user),category_id:integer:defaultValue(1):foreignKey,title:string,body:text"

Форми і валідація
Ви коли-небудь забували поставити формі потрібний enctype для завантаження файлів? Більше не забудете. Yii додасть його автоматично якщо в Active Form буде використаний
fileInput
.
В правилах валідації тепер можна зробити полі валидируемым, але, в той же час, недоступним для масового присвоювання додавши до початку його імені знак оклику.
При використанні FileValidator можна задати
mimeTypes
використовуючи wildcard-патерн. Наприклад,
image/*
означатиме всі типи, які починаються з
image/
(
image/jpeg
,
image/png
і т. д.).
DateValidator навчився валідувати ще більше форматів часу. Тепер можна виставити $type property
TYPE_DATETIME
або
TYPE_TIME
для валідації коротких форматів intl.
Безпека
Завдяки дослідженню Tom Worster і продуктивним обговорень, які за ним пішли, компонент Security вдалося поліпшити:
  • Тепер він не читає більше даних, ніж реально необхідно, з
    /dev/urandom
    та
    /dev/random
    .
  • На FreeBSD перевага віддається
    /dev/random
    , а не
    /dev/urandom
    .
  • Підвищена продуктивність генерації випадкових чисел.
Зміни не критичні, так що оновлюватися на 2.0.7 стрімголов не обов'язково.
Тести для компонента також були перероблені, так що покриття на різних системах при різних доступних розширень тепер набагато краще.
Консольні команди
На додаток до існуючих опцій тепер для більшості опцій можна використовувати короткі аліаси-прапори. Наприклад, при створенні міграцій можна використовувати
./yii migrate/create -p=@app/modules/somemodule/migrations -t=module_migrations new_migration

замість
./yii migrate/create --migrationPath=@app/modules/somemodule/migrations --migrationTable=module_migrations new_migration

У своїх власних контролерів реалізувати це можна перекривши метод
yii\console\Controller::optionAliases()
.
Впровадження залежностей у анонімні функції в конфігах
Залежно тепер автоматично впроваджуються в замикання, що використовуються у конфігурації:
'components' => [
'pheanstalk' => function(yii\web\User $user) {
$result = new \Pheanstalk\Pheanstalk('localhost');
$result->watch($user->getId());
return $result;
},
// ...

PostgreSQL mutex
З'явилася реалізація Mutex під PostgreSQL. Якщо ви користуєтеся даною СУБД, у вас з'явився ще один варіант реалізації блокування.
Шаблон проекту advanced
В шаблоні проекту advanced з'явилася конфігурація для vagrant, що дозволяє швидко підняти робоче оточення.
Детальніше про неї можна дізнатися з документації.

Джерело: Хабрахабр
  • avatar
  • 0

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.