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

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

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

Поддержать разработчиков:
https://opencollective.com/yiisoft
加入频道
#yiisoftTranslatorExtractor #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii Message Extractor 1.0.0

Инструмент командной строки, позволяющий автоматически извлекать идентификаторы строк для перевода из исходных PHP-файлов и помещать их в один из источников переводов (сейчас доступны PHP-файлы, БД и gettext-файлы).

Использование инструмента позволяет не отслеживать изменения в исходном коде: достаточно повторно запустить команду ./yii translator/extract для обновления источников.

—————

Перед релизом в пакет было внесено несколько изменений (PR):

• папка vendor по умолчанию исключена из парсинга;

• добавлены опции except и only.
⚡️ #yiisoftUser #yiisoftDemo

В пакете Yii User сделали несколько улучшений.

• В мидлвари CookieLoginMiddleware опция addCookie переименована forceAddCookie, а также изменено поведение мидлвари, зависящее от этой опции (PR): теперь если опция включена, то куки будут добавляться всегда, а если отключена, то только в том случае, если метод IdentityInterface::shouldLoginByCookie() возвращает true.

• Добавили мидлварь LoginMiddleware, которая позволяет автоматически залогинить пользователя, если в запросе уже есть его идентичность IdentityInterface (PR). Как правило, аутентификацию пользователя и добавление его идентичности в запрос выполняет мидлварь \Yiisoft\Auth\Middleware\Authentication.

• Обновили dev-зависимости и добавили тесты конфигурации пакета (PR).

Соответствующие изменения внесены в демо веб-приложения (PR).
#yiisoftDi #ПатчРелиз #Релиз

🎁 Yii Dependency Injection 1.0.1

• Исправлена ошибка: определение сервиса в виде массива не использовалось в случае расширения сервиса в сервис-провайдере (PR).
⚡️ #yiisoftDemo

В демо веб-приложения для зависимости yiisoft/translator-extractor указана стабильная версия ^1.0 (PR).
⚡️ #yiisoftYiiBulma

Добавлена поддержка иконок для виджета Breadcrumbs в Yii Bulma (PR).
⚡️ #yiisoftYiiWidgets

В пакете Yii Widgets добавлена документация для виджета Alert (PR).
⚡️ #yiisoftDi

В пакете Yii Dependency Injection класс ExtensibleService помечен как @internal (PR) .
#yiisoftUser #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii User 1.0.0

Пакет реализует функционал для управления идентичностью пользователя и проверки доступа:

• Вход и выход из системы.
• Получение текущей аутентифицированной идентичности.
• Изменение текущей идентичности.
• Проверка доступа для текущего пользователя.
• Автоматический вход в систему на основе идентификатора из атрибута запроса.
• Автоматический вход в систему (функция "запомнить меня") на базе cookie.

У пакета, как обычно, высокие технические показатели качества:
- 100% покрытие тестами;
- 100% MSI;
- 98,9% уровень покрытия типами;
- Psalm уровень 1.

—————

Перед релизом дополнили документацию (PR) и удалили из интерфейса CookieLoginIdentityInterface метод shouldLoginByCookie() (PR).

⚡️ #yiisoftDemo

В соответствии с этими изменениями доработали функцию "запомнить меня" в демо веб-приложения (PR).
⚡️ #yiisoftYiiQueue #yiisoftYiiQueueAmqp

Адаптировали тесты в Yii Queue к стабильной версии Yii Factory (PR) и исправили ошибки psalm в Yii Queue AMQP Driver (PR).
⚡️ #yiisoftDataDb

Несколько изменений в Yii Data DB (PR):

• исправили некорректную работу фильтра Between;

• добавили трейт ParameterizedTrait, который может использоваться для пользовательских фильтров, использующих параметры для запроса;

• изменили видимость свойства QueryDataReader::$filterProcessors на protected (может быть полезно при написании собственных ридеров).
⚡️ #yiisoftYiiCycle

Ребята из Spiral Scout зарелизили Cycle ORM 2.0.

В ветке 2.0 пакета Yii Cycle ORM переключили зависимости на стабильные версии (PR).
⚡️ #yiisoftDb

В пакете Yii DB c помощью атрибута ReturnTypeWillChange подавлены deprecated-сообщения в PHP 8.1 (PR).
⚡️ #yiisoftYiiRunner #yiisoftYiiRunnerHttp #yiisoftYiiRunnerConsole #yiisoftYiiRunnerRoadrunner #yiisoftApp #yiisoftDemo #yiisoftAppApi

ConfigFactory из пакета Yii Runner теперь принимает в качестве первого аргумента объект Yiisoft\Config\ConfigPaths вместо абсолютного пути к корню проекта, что позволит при необходимости дополнительно указать пути к папке с конфигурацией приложения и к папке vendor (PR).

Соответствующие изменения внесены в пакеты и приложения:

Yii HTTP Runner (PR),
Yii Console Runner (PR),
Yii RoadRunner Runner (PR),
Шаблон веб-приложения (PR),
Демо веб-приложения (PR),
Шаблон API-приложения (PR).
⚡️ #yiisoftYiiBulma

Сделали рефакторинг кода и добавили новые методы в виджетах Dropdown, Nav, NavBar в пакете Yii Bulma (PR).
⚡️ #yiisoftForm

В пакете Yii Form в интерфейсе модели форм добавлен новый метод FormModelInterface::attributes(), возвращающий имена атрибутов (PR).
⚡️ #yiisoftYiiCycle

В ветке 2.0 пакета Yii Cycle ORM актуализировали документацию и удалили теперь не нужные мапперы SoftDeletedMapper и TimestampedMapper (PR).
⚡️ #yiisoftRouter

Готовим Yii Router к релизу: подняли уровень psalm до 1 (PR) и удалили интерфейсы CurrentRouteInterface.php, GroupInterface, RouteInterface, RouteParametersInterface (PR).

Удалённые интерфейсы вводились для разделения контекстов использования (конфигурирование и получение данных), но практика показала, что это было неудачное решение (типизация по факту некорректная + интерфейсы вводят в заблуждение). Но, чтобы всё-таки повысить удобство публичного API, мы объединили методы, которые требуются только внутри пакета, и пометили их как @internal:

• в классе Route методы getDispatcherWithMiddlewares(), getName(), getMethods(), getPattern(), getHost(), isOverride(), getDefaults(), hasMiddlewares(), getDispatcherWithMiddlewares() объединены в один getData();

• в классе Group методы getCorsMiddleware(), hasCorsMiddleware(), getMiddlewareDefinitions(), getItems(), getPrefix(), getNamePrefix(), getHost() объединены в один getData();

• в классе CurrentRoute методы setRoute() и setArguments() объединены в один setRouteWithArguments();

• метод CurrentRoute::setUri() также помечен как @internal.

—————

⚡️ #yiisoftRouterFastroute #yiisoftRequestModel #yiisoftYiiDebugApi #yiisoftYiiDataview #yiisoftDocs #yiisoftDemo #yiisoftApp #yiisoftDemoApi

Соответствующие изменения были внесены в документацию (PR), приложения и пакеты:

- Yii Router FastRoute Adapter (PR),
- Yii Request Model (PR, PR),
- Yii Debug API (PR),
- Yii Data Widgets (PR),
- Шаблон веб-приложения (PR),
- Демо веб-приложения (PR),
- Демо API-приложения (PR).
⚡️ #yiisoftYiiBulma

В пакете Yii Bulma доработали документацию и doc-блоки (PR), а также исправили конфигурацию пакета (PR). Теперь конфигурация класса Yiisoft\Form\Widget\Field находится в группе widgets.
⚡️ #yiisoftRouter

В пакете Yii Router сделали 100% покрытие тестами и исправили ошибку при формировании дерева роутов: в случаях, когда несколько групп имели один префикс, часть роутов не попадала в дерево (PR).