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

    Всем привет! Это последний выпуск новостей в "весёлом" 2020 году. Я едва успел его приготовить потому как скорость разработки Yii 3 сильно подросла. Все пакеты в этом месяце мы тегнуть не успели, но многие почти готовы, поэтому стоит ожидать релизов в Январе.


    С наступающим Новым Годом! Пусть будет менее сумасшедшим, чем 2020. — Александр Макаров


    // Не забывайте ставить звёздочки любимым пакетам на GitHub.


    Фонд и команда


    • Евгений Зюбин присоединился к команде на фуллтайм для работы над Yii 3. Пока всё идёт замечательно! ы
    • Валерий Горбачев также присоединился к команде. Его вы можете знать по его работе над i18n и MSSQL.
    • Мы применили весь бюджет фонда, чтобы увеличить доступное для работы над Yii время команды. Это вылилось в сильное ускорение темпов разработки.

    Год показал что мы можем тратить средства на разработку эффективно, так что помогать нам финансово — отличный вариант!


    Yii 1


    Был выпущен Yii 1.1.23.
    Он добавляет поддержку PHP 8 и улучшает совместимость с PHP 7. Также добавлена поддержка PostgreSQL 12.


    Это первый релиз, который сделал новый член команды, Marco van 't Wout, под руководством Carsten Brandt.


    Yii 2


    Вышел Yii 2.0.40. Фокус релиза, в основном, на исправлении ошибок.


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



    Также:



    Yii 3


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


    • Ко всем репозиториям. Применён новый набор правил StyleCI. Стиль кода стал ещё более консистентным.
    • Покрытие тестами, MSI были улучшены практически в каждом пакете.
    • Порезана история Git у некоторых пакетов, которые были получены саб-сплитом Yii 2 и таскали с собой всю его историю.
    • Включены GitHub discussions в yiisoft/app. Посмотрим, что из этого выйдет. Мы не хотим пока заменять форум, но может получиться полезно.

    Релизы


    • Cookies 1.0.0. Пакет, вероятно, будет использован в форумном движке Flarum.
    • Strings 1.0.0. Кроме общей зачистки добавился метод StringHelper::split().
    • Test support 1.0.0. С последнего выпуска новостей появилась документация и набор для тестирования кеша.
    • Aliases 1.1.2.
    • Composer config plugin 0.5.0.
    • i18n 1.0.0.
    • Session 1.0.0. С последнего выпуска новостей сессия перестала запускаться когда можно обойтись без этого.
    • HTTP 1.1.0. Добавлен ContentDispositionHeader. Оно помогает сформировать кросс-браузерный заголовок, соответствующий RFC.

    Новые пакеты



    Мы не только добавляем пакеты, но и удаляем… некоторые пакеты, такие как yii-api, были удалены.


    Arrays



    Хелпер Files и файловая система


    В хелпере Files произошли следующие изменения:


    • Добавлен FileHelper::isEmptyDirectory().
    • Добавлен FileHelper::openFile().
    • Добавлен FileHelper::lastModifiedTime(), позволяющий получить время последней модификации содержимого директории.
    • Добавлены FileHelper::findDirectories() и FileHelper::findFiles().
    • FileHelper::unlink() поддерживает больше особенных ситуаций, в том числе под Windows.
    • FileHelper::filterPath() был заменён отдельным PathMatcher.

    Пакет File system теперь использует стабильную версию Flysystem.


    Консоль


    Команда yii serve теперь по умолчанию использует в качестве роутера public/index.php.
    Это сделано чтобы нормально поддерживались точки в URL.


    БД и Active Record


    Зачистка порта базы данных и AR из Yii 2 идёт полным ходом. До завершения ещё далеко, но движение в этом направлении
    верное. Интересные изменения:



    Миграции



    Cycle



    Обработчик ошибок


    Применён новый дизайн к страницам ошибок. За него спасибо Аркадию Зимину и Фёдору Достоевскому.




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




    Отладчик


    • Серверные части были зачищены. Коллекторы были улучшены. Исправлены некоторые ошибки.
    • Почти не требуется ручной конфигурации для включения отладчика. Достаточно изменения одного флага в конфиге.
    • Поправлен сбор данных о потреблении памяти.
    • Всё чтение и запись данных теперь делаются через нормальные абстракции.

    Фронт-часть отладчика всё ещё разработке.


    Профайлер


    • Общая зачистка и рефакторинг.
    • Добавленная конфигурация по-умолчанию.

    Инструментарий разработки фреймворка


    Были сделаны следующие улучшения инструмента yii-dev:


    • Команда test, которая по-тихому запускает тесты пакета и выводит только ошибки.
    • Команда git/pr/create, которая может делать GitHub pull request.
    • Команда github/settings, которая помогает менять настройки репозиториев.
    • Ошибки стали более полезными.
    • Команда replicate/copy-file, которая позволяет скопировать любой файл в любой пакет.
    • Инструмент теперь нормально работает с симлинками в контейнере Docker.
    • Команда exec теперь выводит всё в консоль сразу.
    • В команду release/make добавлены дополнительные проверки и опции. Именно она использовалась для последних релизов.
    • Рефакторинг.

    Перевод сообщений


    • Отрефакторены драйверы для gettext и базы данных.
    • В README добавлена документация.

    Пакет почти готов к релизу.


    Демо-приложение


    Мы обновляем демо вслед за пакетами:



    Шаблон веб-приложения



    Также обновлена начальная страница:




    Шаблон API



    Сейчас в шаблоне достаточно много примеров. Со временем они переедут в демо.


    Кеш


    Кеш серьёзно отрефакторен. Главные класс кеша теперь не реализует PSR, но использует PSR-16 как хендлеры.
    Есть возможность выставить TTL и префикс по-умолчанию, есть защита от cache stampede, поддерживается инвалидация через
    зависимости.


    Почищены и отрефакторены большинство хендлеров. Очень вероятно что в начале года сделаем релиз.


    Лог


    Лог также серьёзно почищен и порефакторен. Для конечного пользователя это всё ещё PSR-совместимый логгер, но с точки
    зрения конфигурации и возможностей стало интересней:


    • Можно настроить формат лога.
    • Добавлен StreamTarget для вывода в стрим.
    • Уменьшено потребление ресурсов.
    • Можно добавить свой контекст в лог.

    Var dumper


    • Улучшена обработка особых случаев.
    • Больше тестов и рефакторинга.
    • Экспорт замыканий выделен в отдельный класс ClosureExporter.

    Bootstrap


    Изменения есть как для Bootstrap 4, так и для Bootstrap 5.



    Bulma



    Роутер



    Serializer



    Сейчас решается судьба пакета.
    Хоть для некоторых случаев он и полезен, в простых случаях можно без него, а в сложных его недостаточно.


    HTML


    • Зачистка, удалены устаревшие части.
    • Добавлены Html::div(), Html::span() и Html::p().

    Assets



    Виджеты


    Публичное API было прилично изменено для поддержки иммутабельности в виджетах.
    Я думаю что и синтаксис стал лучше:


    <?= MyWidget::widget()->options(['class' => 'testMe'])->begin() ?>
        Content
    <?= MyWidget::end() ?>

    CSRF


    CSRF серьёзно отрефакторен:


    • Структура стала более логичной.
    • Больше безопасности.
    • Интерфейсы, чтобы реализовать свой алгоритм защиты.
    • Реализован алгоритм, не требующий состояния.
    • Конфиги по-умолчанию.

    Первые сторонние пакеты


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



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



    В общем сейчас документация в несколько устаревшем состоянии. Концептуально ничего не поменялось, а вот синтаксис много
    где не соответствует. Будет обновлять в следующем году.


    Почитать



    ️Спасибо!


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


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


    Комментарии 3

      +1
      Спасибо разработчикам, вы делаете отличный продукт. Успехов и новых релизов в 2021!
        0
        Прям очень удивлен поддержке php8 в Yii 1.
        Есть крупный legacy на нем и как раз упираемся в производительность.
          0

          Ну, попробуйте. Может быть поможет (если упёрлись не в базу).

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое