Хроники Yii3
625 subscribers
43 photos
1.7K links
Описание процесса разработки фреймворка из первых рук 😎

Обсуждение:
https://yangx.top/yii3ru

Сводка по всем пакетам:
https://www.yiiframework.com/status/3.0

Поддержать разработчиков:
https://opencollective.com/yiisoft
加入频道
Channel created
Channel photo updated
#ХроникиYii3 теперь в формате канала 😎

Заметки о процессе разработки Yii 3 в русскоязычной группе «Yii Framework 3» стали выходить на регулярной основе, решили выделить их в отдельный канал. Продолжим теперь здесь. Присоединяйтесь и рассказывайте коллегам, будет интересно.
🎁 #yiisoftView #ПервыйРелиз

Первый релиз Yii View 1.0.0 (новость на yiiframework.com).

Yii View — библиотека для рендеринга представлений. Включает в себя абстракцию над шаблонизаторами с поддержкой иерархии "шаблон / представление / вложенное представление" и PHP-шаблонизатор.

Пакет содержит два основных класса:

View — класс общего назначения, предназначен для рендеринга email'ов, SMS-сообщений и т. д. (документация);

WebView — web-специфичный класс с поддержкой особенностей рендеринга HTML-страниц (документация).

Yii View является частью фреймворка, но может использоваться и отдельно.
🎁 #yiisoftYiiView #ПервыйРелиз

Первый релиз Yii View Extension 1.0.0 (новость на yiiframework.com).

Yii View Extension — расширение библиотеки Yii View, которое добавляет расширенный web-специфичный функционал и совместимость с PSR-7 интерфейсами.

Основной класс ViewRenderer позволяет работать с шаблонами, инъекциями параметров, meta- и link-тегов, а также получать в результате рендеринга представлений как PSR-7 ответ, так и обычную строку.
🎁 #yiisoftViewTwig #ПервыйРелиз

Первый релиз Yii View Twig Renderer 1.0.0.

Yii View Twig Renderer —расширение библиотеки Yii View, позволяющее использовать шаблонизатор Twig.

• Все переменные из обычных шаблонов также будут доступны в twig-шаблоне.

• Функция get(string $id), доступная во всех twig-шаблонах, позволяет получить доступ к любым объектам, которые может вернуть контейнер приложения, в том числе к виджетам.

Подробности в readme.
🎁 #yiisoftMailer #yiisoftMailerSwiftmailer #ПервыйРелиз

Первый релиз Yii Mailer 1.0.0 и Yii Mailer Swiftmailer Extension 1.0.0 (новость на yiiframework.com).

Yii Mailer предоставляет функционал для формирования содержимого письма и базовый интерфейс для отправки писем.

Из коробки предоставляется реализация интерфейса отправки, которая вместо фактической отправки писем сохраняет их содержимое в файл.

Реальная отправка писем вынесена в отдельные взаимозаменяемые пакеты.

Yii Mailer Swiftmailer Extension — расширение Yii Mailer для отправки писем с помощью библиотеки Swiftmailer.
🎁 #yiisoftLogTargetEmail #ПервыйРелиз

Первый релиз Yii Logging Email Target 1.0.0.

Yii Logging Email Target — цель логов для библиотеки Yii Logging, которая отправляет сообщения логов на электронную почту.
⚡️#yiisoftDi

В readme DI-контейнера исправлен бейдж, отображающий процент покрытия типами (PR). Почему-то ранее отображалось покрытие из пакета Yii CSRF.
⚡️#yiisoftViewTwig

В readme пакета Yii View Twig Renderer добавлены новые и улучшены существующие примеры использования (PR).
⚡️#yiisoftRouter

В пакете Yii Router доработаны группы роутов (PR):

• добавлен метод Group::host(), который задаёт хост для группы роутов;

• добавлен метод Group::namePrefix(), добавляющих префикс к имени всех роутов из группы;

• в контексте создания группы роутов (конфигурирование роутов в приложении) для группы роутов IDE теперь будет предлагать только сеттеры.
⚡️#yiisoftRouter

Ещё немного почистили интерфейсы в Yii Router (PR):

• в RouteCollectorInterface удалены методы withDispatcher() и hasDispatcher();

• в RouteInterface удалены методы injectDispatcher(), withDispatcher(), hasMiddlewares() и hasDispatcher().
⚡️#yiisoftWidget

Причесали Yii Widget (PR):

- изменили версию PSR-контейнера с 1.0.0 на ^1.0;
- добавили ещё тестов;
- Mutation Score Indicator увеличен до 100%;
- исключили все служебные файлы при создании архива репозитория;
- немного улучшили конфигурации GitHub Workflow и других служебных файлов.
⚡️#yiisoftFactory

Доработки в Yii Factory (PR):

• В фабрике в методе Factory::create() удалён второй параметр, через который можно было передать аргументы для конструктора.

• В фабрике по-умолчанию для интерфейса ContainerInterface задаётся переданный в фабрику контейнер, либо сама фабрика, если контейнер не задали.

• Удалён класс InvalidDefinition.

• Удалён метод DefinitionExtractor::fromCallable().

• Исправлены и доработаны сообщения об ошибках в ClassDefinition.

• Доработаны сообщения об ошибках в DefinitionValidator.

• Добавлены тесты, покрытие увеличено до 100%;

• Немного подрефакторена конфигурация PHPUnit.
⚡️#yiisoftFactory #yiisoftYiiConsole #yiisoftYiiDebugApi

Изменения в требуемых версиях контейнера psr/container:

Yii Factory (PR) 1.0.0^1.0.0
Yii Console (PR) 1.0.0^1.0|^2.0
Yii Debug API (PR) 1.0^1.0|^2.0
⚡️#yiisoftFactory

Небольшие улучшения в Yii Factory (PR):

• добавлена поддержка всех существующих версий psr/container (^1.0|^2.0);

• уровень стабильности зависимостей (minimum-stability) повышен до стабильного.
⚡️#yiisoftMiddlewareDispatcher

Провели замеры производительности Yii Middleware Dispatcher (см. PR). Оказалось, что в текущей реализации серьёзно течёт память. Нашли несколько узких мест и исправили проблему.

• В публичном методе MiddlewareDispatcher::withMiddlewares() перед $new->stack = null; добавили unset($new->stack);. Это позволяет удалять стек сразу, не дожидаясь сборщика мусора.

• В приватном методе MiddlewareDispatcher::buildMiddlewares() заменили использование динамической функции на статическую, что пусть немного, но улучшило производительность.

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