- PVSM.RU - https://www.pvsm.ru -
Вышла версия 2.0.7 PHP фреймворка Yii. Как установить или обновиться описано на странице http://www.yiiframework.com/download/ [1].
Данная версия содержит более сотни улучшений и исправлений [2], уточнения документации и её переводы.
Для обновления может понадобится выполнить дополнительные действия, описанные в UPGRADE.md [3].
Спасибо нашему замечательному сообществу [4], которое дало нам множество пулл-реквестов и обсуждений. Без вас этого релиза не было бы. Спасибо!
За процессом разработки Yii можно следить, поставив звёздочку или нажав на watch на странице проекта на GitHub [5]. Также у нас есть Twitter [6] и группа в Facebook [7].
Ну а теперь рассмотрим самые интересные улучшения и исправления этого релиза.
Новый валидатор может проверять IP на чёткое соответствие, диапазоны и маски. Он может использоваться как отдельный валидатор, так и как часть метода rules()
модели:
public function rules()
{
return [
['address', 'ip', 'ranges' => [
'192.168.10.128'
'!192.168.10.0/24',
'any' // все остальные адреса
]],
];
}
Подробнее возможности валидатора описаны в руководстве [8], комментариев к классу [9] и
тестах [10].
Форматтер обзавёлся новым методом asDuration()
, который позволяет получить читабельную строку из интервала времени, представленного объектом DateInterval [11], количеством секунд или строкой ISO8601 [12]:
echo Yii::$app->formatter->asDuration(131);
// выведет "2 minutes, 11 seconds"
Теперь через yiii18nFormatter::$calendar
можно выбрать, по какому календарю форматировать даты. Например, вот так можно использовать Персидский календарь:
Yii::$app->formatter->locale = 'fa_IR@calendar=persian';
Yii::$app->formatter->calendar = IntlDateFormatter::TRADITIONAL;
Yii::$app->formatter->timeZone = 'UTC';
$value = 1451606400; // Fri, 01 Jan 2016 00:00:00 (UTC)
echo Yii::$app->formatter->asDate($value, 'php:Y');
// выведет "۱۳۹۴"
Подробное описание можно найти в документации к классу [13].
Кроме того, транслитерация вне контекста URL теперь доступна как Inflector::transliterate()
[14], что полезно для генерации ключевых слов и других метаданных при разработке под такие языки, как Вьетнамский.
Помимо исправлений в релиз были включены и несколько интересных улучшений. В Query::groupBy()
и Query::orderBy()
теперь можно использовать yiidbExpression
:
$expression = new Expression('SUBSTR(name, 2)');
$users = (new yiidbQuery)
->from('user')
->orderBy($expression)
->limit(10)
->all();
Для SQLite стало возможным использование псевдонимов в DSN:
'db' => [
'dsn' => 'sqlite:@app/db/database.sqlite3',
]
Для JOIN с связанными записями в Active Record появился упрощённый способ именовать таблицы. Синтаксис, доступный ранее в join()
, теперь можно использовать и в joinWith()
:
// join-им с заказами и сортируем результат по orders.id
$query->joinWith(['orders o'])->orderBy('o.id');
Новый синтаксис миграций, введённый в 2.0.6, получил несколько улучшений. Во-первых, это поддержка unsigned
:
'createdBy' => $this->integer(10)->unsigned(),
Во-вторых, теперь можно использовать выражения в качестве значений по умолчанию:
$this->integer()->defaultExpression('CURRENT_TIMESTAMP');
Команда ./yii migrate/create
стала умнее. На основе имени создаваемой миграции и параметров она научилась генерировать код самой миграции:
./yii migrate/create create_post --fields=title:string,body:text
сгенерирует:
class m150811_220037_create_post extends Migration
{
public function up()
{
$this->createTable('post', [
'id' => $this->primaryKey(),
'title' => $this->string(),
'body' => $this->text()
]);
}
public function down()
{
$this->dropTable('post');
}
}
Синтаксис подробно описан в руководстве [15]. Надеемся, нововведение сбережёт ваше время.
В интерфейс RBAC было добавлен метод getUserIdsByRole()
[16]. Он наверняка будет полезен при разработке админки для ролей и разрешений.
VarDumper::dump()
научился работать с магическим методом PHP __debugInfo()
.$_ENV
и $_SERVER
на странице ошибок. Отображаемые данные настраиваются через yiiwebErrorHandler::$displayVars
[17].yiihelpersVarDumper::export()
научился работать с циклическими ссылками, что делает логирование и отладочную панель более надёжными.Автор: SamDark
Источник [18]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/112252
Ссылки в тексте:
[1] http://www.yiiframework.com/download/: http://www.yiiframework.com/download/
[2] более сотни улучшений и исправлений: https://github.com/yiisoft/yii2/blob/2.0.7/framework/CHANGELOG.md
[3] UPGRADE.md: https://github.com/yiisoft/yii2/blob/2.0.7/framework/UPGRADE.md
[4] замечательному сообществу: https://github.com/yiisoft/yii2/graphs/contributors
[5] на странице проекта на GitHub: https://github.com/yiisoft/yii2
[6] Twitter: https://twitter.com/yiiframework
[7] группа в Facebook: https://www.facebook.com/groups/yiitalk/
[8] в руководстве: http://www.yiiframework.com/doc-2.0/guide-tutorial-core-validators.html#ip
[9] комментариев к классу: http://www.yiiframework.com/doc-2.0/yii-validators-ipvalidator.html
[10] тестах: https://github.com/yiisoft/yii2/blob/2.0.7/tests/framework/validators/IpValidatorTest.php
[11] объектом DateInterval: http://php.net/manual/ru/class.dateinterval.php
[12] строкой ISO8601: https://ru.wikipedia.org/wiki/ISO_8601
[13] документации к классу: http://www.yiiframework.com/doc-2.0/yii-i18n-formatter.html#$calendar-detail
[14] Inflector::transliterate()
: http://www.yiiframework.com/doc-2.0/yii-helpers-baseinflector.html#transliterate()-detail
[15] в руководстве: http://www.yiiframework.com/doc-2.0/guide-db-migrations.html#generating-migrations
[16] getUserIdsByRole()
: http://www.yiiframework.com/doc-2.0/yii-rbac-managerinterface.html#getUserIdsByRole()-detail
[17] yiiwebErrorHandler::$displayVars
: http://www.yiiframework.com/doc-2.0/yii-web-errorhandler.html#$displayVars-detail
[18] Источник: https://habrahabr.ru/post/277201/
Нажмите здесь для печати.