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

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

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


Всем привет! Это очередной выпуск новостей Yii. Как обычно, в выпуске вас ждут релизы Yii 2, прогресс Yii 3, важные вести о Yii 1 и другие новости. Приятного чтения и будьте здоровы. — Александр Макаров


Фонд


С прошлого выпуска пришлось прилично отвлечься на фонд, а именно на то, как средства перебрасываются из GitHub Sponsors в OpenCollective. С GitHub они уходили нормально, а вот куда — большой вопрос. Потребовалось время, чтобы разобраться, но проблему удалось решить.


Ещё одна новость, частично связанная с фондом. Автор httpsoft/http-message, Евгений Зюбин, вероятно присоединится к команде фулл-тайм если/когда это позволит пополнение фонда. Если вы или ваша компания хотите получить Yii 3 раньше, можете помочь.


Инфраструктура


Мы постоянно улучшаем процесс тестирования пакетов:


  • В пакеты со стабильной версией добавлена проверка Roave backwards compatibility.
    Она проверяет что публичный API не сломан по-сравнению с предыдущим стабильным релизом.
  • Мы продолжили перевод тестов с Travis на GitHub actions как для Yii 2, так и для Yii 3. Actions классные, а Travis не так давно порезал поддержку OpenSource. Хорошо что мы начали переход заранее.
  • Мы решили не собирать покрытие кода через PHPUnit с последующей отсылкой его в Scrutinizer CI и теперь генерируем отчёт о покрытии средствами Scrutinizer. Это значительно быстрее, а результат тот же.
  • Отлично себя показал Psalm. Рекомендуем, в том числе, для ваших проектов.
  • В консоль GitHub actions теперь всё выводится в цвете. Выглядит значительно лучше!

Немного правок были сделаны на сайте. Прежде всего это переход на новый метод аутентификации GitHub API. Также был сделан ряд небольших улучшений фронтенда.


Патчи для совместимости с PHPUnit для Yii 2 и Yii 1 переехали в отдельный репозиторий. Если вдруг вам понадобится тестировать приложение на версиях PHP с 5.3 по 8, репозиторий будет определённо полезен.


Yii 1


  • Yii 1.1 будет поддерживаться ещё один год благодаря Skillshare и Onetwist Software.
  • Marco van 't Wout из веб-агентства Tremani официально присоединился к команде поддержки Yii 1.1.

Yii 2


Был выпущен Yii 2.0.39. В нём есть улучшения DI-контейнера и дополнительные исправления для работы с PHP 8.


Чуть менее заметное улучшение коснулось способа генерации аннотаций для магических свойств. Теперь некоторые IDE, включая PhpStorm, будут отличать свойства только для чтения и только для записи.


Были выпущены новые версии следующих расширений:


  • Redis 2.0.14
  • MongoDB 2.1.10
  • Faker 2.0.5
  • Bootstrap4 2.0.9
  • Debug 2.1.14
  • Auth Client 2.2.8
  • Twig 2.4.1

Yii 3


С прошлого выпуска были сделаны следующие релизы:


  • Injector 1.0.3
  • Security 1.0.0

На данный момент мы готовим пакеты из списка в карточке Trello.


Был принят ряд интересных решений:


  • Все стабильные релизы будут начинаться с версии 1.0.0. Ранее рассматривался вариант начинать с 3.0.0.
  • Пакеты Yii 3.0 буду поддерживать PHP 7.4.
  • В большинство пакетов добавлена конфигурация по-умолчанию. Они будут работать сразу после установки без дополнительной конфигурации или с очень минимальной конфигурацией.
  • Провайдеры конфигурации были удалены почти из всех пакетов и приложений.

В Trello есть доска с задачами, над которыми мы работаем, включая не отражённые в GitHub issue.


Почти каждый из пакетов был серьёзно почищен, получил совместимость с PHP 8 и исправления. Ниже представлено самое интересное.


Новые пакеты


Был создан ряд новых пакетов. Часть из них появились в результате выделения общего кода из других пакетов, а часть — нет.


  • Аутентификация при помощи JWT.
  • Yii Swagger.
  • Черновая версия шаблона для API. Сейчас она больше похожа на демку. Позже мы удалим часть кода чтобы со старта не было лишнего.
  • Request model. Помогает валидировать и преобразовывать данные запроса перед использованием.
  • Middleware dispatcher был выделен из пакетов router и request-model.
  • Error handler был выделен из yii-web.

Инструменты для разработки


  • Были актуализированы зависимости и добавлен Dockerfile.
  • Реализована возможность полу-автоматического выпуска релизов.

Composer config plugin


Была добавлена временная поддержка PHP 8. Она не заменяет вариант с переписыванием плагина на AST и нужна для того, чтобы облегчить тестирование под PHP 8 в то время как мы занимаемся версией с AST.


Контейнер и фабрика


  • Актуализированы зависимости.
  • Устранён хак со ссылкой на себя в контейнере.
  • Добавлена поддержка PHP 8 union type-ов.
  • Зависимости теперь разрешаются как для конструктора, так и для метода при вызове не статичных фабрик, таких как 'engine' => [EngineFactory::class, 'createMethod'].
  • Определения теперь разрешаются в конфигах-массивах.
  • Аргументы для callable теперь разрешаются из DI контейнера. Добавлен Reference::toCall().
  • Любое определение теперь может быть использовано как аргумент конструктора.

Кеш


  • Убрана нормализация ключей и поддержка не строковых ключей.

Bulma


  • Больше документации, улучшено именование.
  • Добавлена возможность использовать значки в выпадающем меню.
  • Все виджеты сделаны иммутабельными.

Роутер


  • Внутренности и конфигурация упрощены путём выделения коллекции маршрутов в отдельный класс.
  • Метод UrlMatcherInterface::getLastMatchedRequest() удалён, добавлен getCurrentUri().
  • UrlMatcher теперь является опциональным, что хорошо сочетается с консольными приложениями.

Шаблоны приложений и демо


  • Больше не требуется NodeJs. Ресурсы забираются через asset packagist.
  • Конфиги значительно почищены. В app мы поделили их по разным пакетам.
  • Убрана ссылка контейнера на себя.
  • В yii-demo добавлен Swagger. Открывается через /swagger.
  • yii-demo подвергся рефакторингу.
  • Заменили в yii-demo реализацию PSR-7 на httpsoft/http-message.

Var dumper


  • Добавлен метод asPhpString(). Он позволяет экспортировать код, в том числе замыкания.

Files


  • В метод filterPath добавлена возможность использовать callback-фильтры.

Cycle


  • В файловую схему теперь можно писать. Также в неё добавлена поддержка чтения из нескольких файлов.
  • Был задействованы наши DI контейнер / фабрика, так что интеграция с Cycle теперь работает на PHP 8.

Data


  • Есть изменения в интерфейсах.

DBAL и ActiveRecord


Как DBAL, так и ActiveRecord, портированные с Yii 2, ещё рефакторить и рефакторить несмотря на то, что их серьёзно почистили и они, по большей части, работают.


Arrays


  • Удаление значений по пути было вынесено в отдельный метод.
  • Метод ArrayHelper::isTraversable() был удалён так как есть is_iterable().

HTML


  • Почистили код.
  • Добавили Html::generateId().
  • Добавили опцию "wrapInput" для checkbox и radio.
  • В data-атрибуты добавлен "aria".
  • Удалён метод Html::getAttributeName.
  • Удалён escapeJsRegularExpression, добавлен normalizeRegexpPattern.
  • Добавлены методы для экранирования в различных контекстах: HTML атрибут, HTML атрибут без кавычек, строковое значение JavaScript.
  • Удалён decode().

Debugger


  • В API добавлена детальная информация об объектах.
  • Есть прогресс с фронтендом.
  • Добавлена возможность задавать размер истории.

Очереди


  • Значительная зачистка, больше тестов.
  • Улучшен основной сигнальный цикл. Добавлен мягкий лимит по памяти, дополнительные события и конфигурация для сигналов.
  • Обновлена документация.
  • Убраны отдельные payload-ы. Всё стало проще.

Translator


Пакеты i18n помечены как устаревшие, добавлены пакеты translator с новым дизайном.


Новая и изменённая документация


  • 000 — Packages
  • 003 — Roadmap
  • 010 — Code Style
  • 016 — Security workflow
  • Cookies
  • Aliases

Рекомендации к чтению и другие новости


  • On not choosing WordPress for the W3C redesign project.
    W3C, организация, занимающаяся веб-стандартами, выбрала Craft CMS, написанную на Yii 2, в качестве движка для своего сайта.
  • Выпущен Composer 2. Мы готовы, так что можете обновляться и получить прирост производительности.
  • Обновлён плагин Yii 2 для PhpStorm.
  • PHP 8.0: What's New and Changed.

️Спасибо!


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


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


  • Wilmer Arambula.
  • Rustam Mamadaminov.
  • mj4444.
  • Dmitriy Gritsenko.
  • Roman Tsurkanu.
  • yiiliveext.
  • Sergei Predvoditelev.
  • DarkDef.
  • Viktor Babanov.
  • Dzianis Jackievič.
  • Alexander Nekrasov.
  • Anton Samoylenko.
  • Dmitry Derepko.
  • Alexey Chernousov.
  • Andrii Vasyliev.
  • wiperawa.
  • Aleksei Gagarin.
  • Bruce Aldridge.
  • Sergei Iamskoi.
  • Maksym Storchak.
  • Evgeniy Tkachenko.
Источник: https://habr.com/ru/post/527634/


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

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

Всем привет! Не так давно на работе в рамках тестирования нового бизнес-процесса мне понадобилась возможность авторизации под разными пользователями. Переход в соответствующий р...
Детская раскраска с картами от Мэдисона Дрейпера 1 | map data OpenStreetMap contributors Картографирование Пол Джонсон, размышляя о причинах выгорания, помимо прочего порекомендовал ком...
Привет, Эмберисты! На этой неделе: Полифилы для пакетов ember-data для старых версий Ember, узнайте как Figma в связке со Storybook облегчает жизнь разработчика, QUnit DOM объявляет о выпуске...
Этот пост будет из серии, об инструментах безопасности, которые доступны в Битриксе сразу «из коробки». Перечислю их все, скажу какой инструмент в какой редакции Битрикса доступен, кратко и не очень р...
Картографируем Северную Корею — новый проект Маартена ван ден Ховена1 | Map data OpenStreetMap contributors, ODbL Картографирование Жан-Луи Циммерман в своем твите собрал несколько нео...