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

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

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

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

🎁 Yii Config 1.0.0

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

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

Подробная информация об установке и использовании пакета представлена в readme.

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

—————

Перед релизом было сделано несколько улучшений.

• Добавили опцию vendor-override-layer, позволяющая добавить слой конфигураций между приложением и вендором (PR).

• Улучшили описание в readme и конфигурации GitHub Actions, scrutinizer, psalm, StyleCI (PR).
⚡️ #yiisoftActiveRecord

Исправили проблему с многократным созданием подключения (ConnectionInterface) в Yii Active Record (PR).
⚡️ #yiisoftRouter

Доработали автоответ на OPTIONS-запросы в Yii Router (PR).

По-умолчанию роутер автоматически отправляет ответ на на OPTIONS-запрос на оснований заданных роутов:

HTTP/1.1 204 No Content
Allow: GET, HEAD

Если вам потребуются заголовки CORS, то вы можете использовать мидлварь, например tuupola/cors-middleware:

use Yiisoft\Router\Group;
use \Tuupola\Middleware\CorsMiddleware;

return [
Group::create('/api')
->withCors(CorsMiddleware::class)
->routes([
// ...
]
);
];
⚡️ #yiisoftYiiWidgets

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

В пакете Yii Data Widgets удалена неиспользуемая категория сообщений для перевода (PR).
⚡️ #yiisoftDb #yiisoftDbRedis

Несколько улучшений в Yii DB:

• построитель запросов и схема БД теперь зависят от ConnectionInterface вместо реализации Connection (PR), что позволяет использовать пакет с базами данных без драйверов PDO (например, ClickHouse);

• в ConnectionInterface добавлен метод quoteColumnName() (PR).

Эти изменения потребовали также внести несколько правок в Yii DB Redis Extension (PR).
⚡️ #yiisoftFiles

В пакете Yii Files добавили нормализацию разделителя пути в паттернах (PR).
#yiisoftFiles #ПатчРелиз #Релиз

🎁 Yii Files 1.0.1

• Добавлена нормализацию разделителя пути в паттернах.
#yiisoftDefinitions #ПатчРелиз #Релиз

🎁 Yii Definitions 1.0.1

• Добавлена поддержка объектов в значениях параметров по умолчанию (PR).

Возможность использовать объекты в качестве значений параметров по умолчанию появилась в PHP 8.1, например:

class Service
{
public function __construct(
private Logger $logger = new NullLogger(),
) {}
}


Теперь это поддерживается в пакете Yii Definitions, а следовательно и в фабрике Yii Factory и в DI-контейнере Yii Dependency Injection.
⚡️ #yiisoftDi

В пакете Yii Dependency Injection добавили тесты с разрешимой и неразрешимой опциональными зависимостями (PR).
⚡️ #yiisoftYiiCycle

Несколько улучшений в Yii Cycle ORM (PR):

- метод RepositoryContainer::get() в случае, если запрашиваемый репозиторий не найден, теперь бросает исключение Yiisoft\Di\NotFoundException вместо Yiisoft\Definitions\Exception\NotFoundException;

- сделали рефакторинг конфигурации пакета.
#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 (может быть полезно при написании собственных ридеров).