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

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

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

Поддержать разработчиков:
https://opencollective.com/yiisoft
加入频道
⚡️ #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).
⚡️ #yiisoftRouter #yiisoftRouterFastroute

Продолжаем подготовку Yii Router и Yii Router FastRoute Adapter к релизу.

• Существенно дополнили документацию по роутеру (PR).

• Изменили поведение роута в случае, если ему передать диспетчер мидлварей уже с мидлварями: теперь они будут перезаписаны мидлварями роута (PR).

• Отключили добавление мидлварей из коллектора к статическим роутам и добавили поддержку variadic-аргументов для методов (PR, PR):
- Route::middleware(),
- Route::prependMiddleware(),
- Route::disableMiddleware(),
- Group::middleware(),
- Group::prependMiddleware(),
- Group::disableMiddleware(),
- RouteCollector::addRoute(),
- RouteCollector::addGroup(),
- RouteCollector::middleware(),
- RouteCollector::prependMiddleware().

• Добавили тестов, немного почистил и отрефакторили пакет Yii Router FastRoute Adapter (PR).
⚡️ #yiisoftRouter #yiisoftRouterFastroute #yiisoftDemo

Внесли изменения в Yii Router и Yii Router FastRoute Adapter.

• В роутере заменили зависимость MiddlewareDispatcher на MiddlewareFactoryInterface и EventDispatcherInterface (опционально); MiddlewareDispatcher теперь создаётся в конструкторе роутера (PR). Для повышения производительности в долгоживущих приложениях диспетчер с мидлварями в роуте подготавливается один раз и в дальнейшем переиспользуется.

• В FastRoute-адаптере подчистили readme и повысили уровень psalm до 2 (PR).

• Исправили генерацию URL в FastRoute-адаптере для адресов с локализацией, теперь при такой генерации не используются данные последнего активного роута (PR). Соответствующие изменения внесены в демо веб-приложения (PR).
⚡️ #yiisoftDemo

В демо веб-приложения исправили GitHub-процесс проверки зависимостей, зафиксировав версию maglnet/composer-require-checker на ^3.8, так как текущие зависимости приложения конфликтуют с недавно вышедшей 4й версией maglnet/composer-require-checker (PR).
⚡️ #yiisoftYiiQueue

Исправили ошибки psalm в пакете Yii Queue (PR).
⚡️ #yiisoftRouter #yiisoftRouterFastroute

Добавили приведение значений параметров по умолчанию к строке и улучшили psalm-аннотации в Yii Router (PR), а также добавили приведение значений параметров при генерации URL к строке и повысили уровень psalm до 1 в Yii Router FastRoute Adapter (PR).
⚡️ #yiisoftYiiCycle

В ветке 2.0 пакета Yii Cycle ORM добавили поддержку поведений сущности и определение EntityManagerInterface в конфигурацию контейнера (PR).
🎄 С Новым 2022 годом!

5 июля 2021 года мы запустили «Хроники Yii3», за это время опубликовали 473 записи и к нам присоединилось 363 подписчика.

В новом году мы продолжим вести хроники и, надеюсь, в 2022 году случится запись о релизе Yii3, к этому есть серьёзные предпосылки 😎

Во время предновогодней суеты команда Yii3 успела зарелизить несколько пакетов, но об этом далее...
👍11🎉4
#yiisoftRouter #yiisoftRouterFastroute #ПервыйРелиз #МажорныйРелиз #Релиз

🎁 Yii Router 1.0.0
🎁
Yii Router FastRoute Adapter 1.0.0

Роутер (он же маршрутизатор) — одна из важнейших составляющих Yii3. Yii Router предоставляет PSR-7 совместимую маршрутизацию запросов и PSR-15 мидлварь, готовую для использования в приложении. Вместо реализации маршрутизации с нуля, пакет предоставляет интерфейс для конфигурации маршрутов и подразумевает использование совместно с пакетом-адаптером. В настоящее время доступен только Yii Router FastRoute Adapter.

Возможности роутера:

• Сопоставление URL-адресов и генерация URL-адресов с поддержкой HTTP-методов, хостов и значений по умолчанию.

• Хорошая поддержка в IDE для конфигурирования маршрутов.

• Группы маршрутов с неограниченной вложенностью.

• Поддержка PSR-15 мидлварей как для отдельных маршрутов, так и для групп.

• Готовая к использованию мидлварь Router для сопоставления маршрутов.

• Удобный сервис CurrentRoute, содержащий информацию о последнем подобранном маршруте.

• Поддержка CORS-мидлварей из коробки.

У пакетов, как и всегда, высокие технические показатели качества:
~100% уровень покрытия тестами,
~100% MSI,
~100% уровень покрытия типами.
Psalm уровень 1.

——————

⚡️ #yiisoftRouter #yiisoftRouterFastroute #yiisoftDemo

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

• Из пакета удалили всё, что касается локалей. Сейчас в демо-приложении локализация в URL реализована с помощью мидлвари LocaleMiddleware, которая в дальнейшем, возможно, будет выделена в отдельный пакет или переедет в пакет Yii Middleware.

• В интерфейсе генератора URL UrlGeneratorInterface:
- добавили аргумент queryParameters, содержащий массив GET-параметров, в методах generate() и generateAbsolute();
- добавили метод generateFromCurrent() для генерации URL на основе текущего маршрута;
- добавили метод setDefaultArgument().

В соответствии с изменениями в роутере доработали Yii Router FastRoute Adapter (PR, PR) и демо веб-приложения (PR, PR, PR).
👍7🔥2
#yiisoftConfig #МинорныйРелиз #Релиз

🎁 Yii Config 1.1.0

Добавили интерфейс ConfigInterface, позволяющий сделать свою реализацию загрузчика конфигураций:

interface ConfigInterface
{
public function get(string $group): array;
public function has(string $group): bool;
}


—————

⚡️ #yiisoftYiiRunnerHttp #yiisoftYiiRunnerConsole #yiisoftYiiRunnerRoadrunner

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

Yii HTTP Runner (PR),
Yii Console Runner (PR),
Yii RoadRunner Runner (PR).
👍1🔥1
👍1