Новости Yii 2020, выпуск 5

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Приветствую!


Время очередного выпуска новостей Yii. Как у Yii 2, так и у Yii 3 всё хорошо :)


На самом деле, в этом году перед этим выпуском было ещё четыре, как следует из порядкового номера. Но я был так увлечён Yii 3, что забыл про хабр… Почитать их можно прямо на главной https://yiiframework.ru/. Ну или, если больше нравится английский, на нашей странице на OpenCollective.

Наконец, дошли руки обновить страницу с командой на официальном сайте.
Константин Сироткин вернулся и активно занимается расширением Yii 2 ElasticSearch.
Сформирована основная команда Yii 3. Вообще это по факту произошло в конце 2019-го. Имена, вероятно, вам известны так как упоминались в предыдущих выпусках.


Мы частично переместили тесты на GitHub actions. Полёт прекрасный, рекомендуем. Мы добавляем статический анализ через phan
и прогоняем тесты через Infection чтобы ещё больше повысить качество кода.


Я потратил немного времени на YiiPowered, где мы собираем проекты на Yii. Сейчас там 571 проект. Улучшения такие:


  • Можно добавлять проекты на Yii 3.0.
  • Для проектов, для которых не заполнены скриншоты, они делаются и загружаются автоматически каждую ночь.

В прошлом выпуске я упомянул конференцию PHP Russia Online.
Прошла она хорошо. Доступны видео.


В качестве эксперимента, я записал скринкаст во время работы над фреймворком.
Очень хочется узнать ваше мнение. Стоит писать ещё? Хотите узнать про какую-то часть фреймворка или процесс разработки?


Yii 2


Вышла версия 2.0.36. Это важное обновление из-за улучшений в работе
DI-контейнера. Он стал немного ближе к Yii 3.


В action как веб, так и консольного контроллеров теперь можно так:


namespace app\controllers;

use yii\web\Controller;
use app\components\BookingInterface;

class HotelController extends Controller
{    
    public function actionBook($id, BookingInterface $bookingService)
    {
        $result = $bookingService->book($id);
        // ...    
    }
}

Ещё одно улучшение в том, что Instance::of() начал работать в массивах:


return [
    ContentTypeMiddleware::class => [
        '__construct()' => [
            Instance::of(StreamFactory::class),
            [
                'json' => Intance::of(JsonFormatter::class),
                'yaml' => Intance::of(YamlFormatter::class),
            ],
        ],
    ],
];

Дополнительно были выпущены следующие расширения:


  • Composer installer 2.0.10 с улучшенной поддержкой Composer 2.
  • ElasticSearch 2.0.6
    и 2.0.7 с фиксами "legacy" релизов.

Yii 3


Во-первых, появился шаблон приложения. С него вы можете начать пробовать Yii 3.
Это не финальная версия, но представление о том, что у нас есть, даёт. Обсуждения и конструктивная критика приветствуются.





  • Выпущена стабильная версия пакета Aliases со 100% покрытием
    кода тестами, которые 100% чисты от мутаций.
  • Ещё одна версия Injector 1.0.1 добавила поддержку PHP 8.
  • В yiisoft/form были добавлены виджеты форм и другие улучшения.
  • Во многие пакеты добавлена строгая типизация.
  • Улучшено покрытие тестами yiisoft/gii и yiisoft/yii-web.
  • Был реализован auto-login middleware, который, вероятно, вы знаете как "remember me".
  • В Composer config plugin улучшено покрытие тестами, стало возможно
    делать ребилд конфига из кода без предварительной сборки. Также теперь генерируется меньше файлов и ограниченно поддерживаются
    переменные окружения. Ну и, наконец, поддерживается Composer 2.
  • Стало возможно настроить HTML-страницу ошибки в ErrorHandler.
  • В консольное приложение добавлены события ApplicationStartup и ApplicationShutdown и удобный способ на них подписываться
    через config/events-console.php. На данный момент это используется в yiisoft/yii-debug.
    Конфигурация в общем была приведена к новому стилю и стала более гибкой.
  • Реализован рендерер Twig.
  • В yii-demo добавлена команда route/list.
  • Пакет RBAC был отрефакторен. Также было реализовано хранилище в PHP файлах.
  • В пакет arrays добавлен модификатор ReverseBlockMerge.
    Он, главным образом, используется в конфигах приложения для правильного порядка обработчиков событий.
  • Реализован пакет миграций для баз данных.
  • Сформировался стиль конфигурации. Он основан на сервис-провайдерах.
  • Интеграция с Cycle ORM была почищена, был обновлён стиль конфигурации и добавлены дополнительные возможности.
  • В пакет HTTP добавлен класс Header, содержащий константы для типичных заголовков HTTP.
  • Покрытие тестами в пакете Queue было увеличено. Также исправлены найденные ошибки.
  • В yiisoft/yii-web добавлен middleware для редиректа на HTTPS.
  • Yii development tool, инструмент, который мы используем для удобной разработки
    Yii 3, был покрыт дополнительными тестами. Были реализованы новые возможности, такие как автоматическое исправление
    зависимостей в composer.json
    на основе исходного кода пакета
  • Добавлен пакет Bootstrap 5.
  • Контейнер зависимостей научился обрабатывать Reference::to() в массивах.
  • В контроллеры и формы добавлена автоматическая генерация ID на основе имени класса. Это упростит процесс конфигурирования.
  • Реализован пакет интеграции с Bulma CSS framework. На данный момент он используется в шаблоне приложения.
  • Есть прогресс по пакету yiisoft/yii-rest.
  • В пакет data добавлен метод DataReaderInterface::readOne().

Общую картину можно наблюдать в Trello.


Новые и переработанные внутренние соглашения:


  • 003 — Roadmap
  • 013 — Code Review.

Новые страницы в руководстве по фреймворку:


  • What is Yii.
  • Installing Yii.
  • Running Applications.
  • Saying Hello.
  • Working with Forms.
  • Looking Ahead.
  • Middleware.
  • Configuration.
  • Aliases.
  • Routing and URL generation
  • Authentication.
  • Glossary.
  • Начат перевод на китайский.

Рекомендации к чтению


  • Vue.js in legacy Yii app
  • Fresh Yii and extension manuals in various formats
  • Yii2 & Doctrine ORM simple integration

️ Спасибо!


Хочу сказать спасибо всем спонсорам и разработчикам, благодаря которым стала возможна разработка Yii 3. Вместе у нас всё получится.


Отдельное спасибо тем, кто помог Yii 3 кодом:


  • Wilmer Arambula.
  • Rustam Mamadaminov.
  • Dmitry Derepko.
  • Martín Peveri.
  • Hubert Strychalski.
  • yiiliveext.
  • Jakharbek.
  • Aleksei Gagarin.
  • Roman Tsurkanu.
  • Alexander Nekrasov.
  • skugarev.
  • Andrii Dembitskyi.
  • Viktor Babanov.
  • Thoulah.
  • Pavel Ivanov.
  • Dmytro Naumenko.
  • Andrii Vasyliev.
  • wiperawa.
  • Trevor.
Источник: https://habr.com/ru/post/510202/


Интересные статьи

Интересные статьи

14 октября состоялась небольшая онлайн-конференция HaxeIn 2020. Одним из докладчиков был Александр Кузьменко — разработчик компилятора Haxe. Доклад Александра — это отчет о работе, проде...
Раз в неделю рассказываю о крупнейших событиях в отрасли в России и мире. Оригинальный ролик - на YouTube, ниже расшифровка.IPO Озон Читать ...
В 2020 году машинное обучение на мобильных платформах перестало быть революционным новшеством. Интеграция интеллектуальных функций в приложения стала стандартной практикой. К сча...
В статье описаны необходимые параметры сервера для оптимальной работы сайта на платформе 1С-Битрикс.
Мы публикуем видео с прошедшего мероприятия. Приятного просмотра.