Новости 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. Фокус релиза, в основном, на исправлении ошибок.


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


  • Auth client 2.2.9.
  • Debug 2.1.15 и 2.1.6.
  • Imagine 2.3.0.
  • Queue 2.3.1.
  • MongoDB 2.1.11.
  • HTTP client 2.0.13.

Также:


  • Мы начали гонять в GitHub actions тесты под Oracle.
  • Свежие образы Docker теперь собираются на GitHub actions.
  • Модуль Yii 2 для Codeception теперь совместим с PHP 8.

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.

Новые пакеты


  • Пакет User был выделен из yii-web.

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


Arrays


  • ArrayHelper::map() теперь может работать с замыканиями.

Хелпер 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 идёт полным ходом. До завершения ещё далеко, но движение в этом направлении
верное. Интересные изменения:


  • Кеш схемы отделён от соединения.
  • Портированы изменения в Yii 2 по части MSSQL.
  • Active Record теперь тестируется под Oracle.

Миграции


  • Общая зачистка и обновление документации.
  • Классы миграций теперь именуются в PascalCase.

Cycle


  • Pipelined schema reading.
  • Команда schema/rebuild.
  • Repository provider.
  • MergeSchema provider.

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


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




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




Отладчик


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

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


Профайлер


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

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


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


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

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


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

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


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


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


  • index.php теперь является роутером для yii serve.
  • Роутер по-умолчанию не кешируется.
  • Выход реализован через POST.
  • Не нужно больше явно использовать CSRF в контроллере.
  • Починена активация пунктов меню.
  • Классы сгруппированы по use-case, а не по типу.
  • Перешли на Bootstrap 5.
  • Обязательные поля выделены визуально.
  • Своя страница 404.
  • Flash выделен в виджет.
  • В отладочном режиме конфигурация не пересобирается, если не изменился ни один файл конфига.

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


  • Шаблон почищен. Удалены все лишние части.
  • index.php теперь является роутером для yii serve.
  • Роутер по-умолчанию не кешируется.
  • Классы сгруппированы по use-case, а не по типу.
  • Добавлен API дебаггера.
  • Своя страница 404 и визуальное выделение обязательных полей.
  • В отладочном режиме конфигурация не пересобирается, если не изменился ни один файл конфига.

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




Шаблон API


  • Конфигурация обновлена для соответствия шаблону веб-приложения.
  • index.php теперь является роутером для yii serve.
  • Роутер по-умолчанию не кешируется.
  • Добавлен Swagger, все существующие endpoint документированы.
  • Классы сгруппированы по use-case, а не по типу.
  • Добавлена группа для роутов REST.
  • В отладочном режиме конфигурация не пересобирается, если не изменился ни один файл конфига.

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


Кеш


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


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


Лог


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


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

Var dumper


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

Bootstrap


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


  • Разметка.
  • Возможность открыть Accordion на определённом пункте и другие улучшения в виджетах.
  • Пакеты теперь предоставляют конфиг для форм, так что стили к формам применяются сразу после установки.

Bulma


  • Пакет теперь предоставляют конфиг для форм, так что стили к формам применяются сразу после установки.
  • Добавлен виджет Tabs.
  • Добавлен виджет Progress bar.
  • Добавлен виджет Modal.

Роутер


  • Улучшены сообщения об ошибках.
  • Возможность перекрыть роут.
  • Возможность включать и отключать кеш из параметров приложения.

Serializer


  • Добавлен XML serializer.
  • Добавлена сериализация объектов.

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


HTML


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

Assets


  • Время измени директории проверяется рекурсивно.
  • Добавлены jsString и jsVar.

Виджеты


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


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

CSRF


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


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

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


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


  • SVG inline.
  • SVG inline, Bootstrap
  • SVG inline, Font Awesome

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


  • Больше пакетов нормально документированы в их README.
  • Обновлена документация по логированию.

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


Почитать


  • О Yii::createObject() в Yii 3.

️Спасибо!


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


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


  • Wilmer Arambula.
  • Rustam Mamadaminov.
  • Viktor Babanov.
  • Valerii Gorbachev.
  • Evgeniy Zyubin.
  • Roman Tsurkanu.
  • Dmitry Derepko.
  • Sergei Predvoditelev.
  • Anton Samoylenko.
  • mj4444.
  • yiiliveext.
  • Martín Peveri.
  • Vitalii Shkolin.
  • Leonid Chenenko.
  • Mister 42.
  • Sergei Iamskoi.
  • Alexey Chernousov.
  • epifrin.
  • Aleksei Gagarin.
  • Insolita.
  • Pavel Ivanov.
  • 1Luc1.
  • Rei Bengu.
  • Roman Hlushchak.
Источник: https://habr.com/ru/post/535580/


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

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

Карта виски, разработанная пользователем Aromatiker, снова работает 1 | Leaflet | map data OpenStreetMap contributors О нас Мы ищем людей, которые помогут нам с переводом WeeklyOSM на фра...
Эта публикация написана после неоднократных обращений как клиентов, так и (к горести моей) партнеров. Темы обращений были разные, но причиной в итоге оказывался один и тот же сценарий, реализу...
В этом выпуске читайте: Huawei теряет возможность выпускать устройства с картами памяти SD; Рунет обходит телевидение по рекламным доходам; ARM представляет новые процессоры; в России...
Банки данных помогают делиться результатами экспериментов и измерений, играют важную роль в формировании академической среды и в процессе развития специалистов. Расскажем как о датасетах, полу...
Привет, Хабр! Представляю вашему вниманию перевод статьи "The Rust Release Team "Announcing Rust 1.34.0". Команда разработчиков Rust рада сообщить о выпуске новой версии Rust, 1.3...