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

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

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

Поддержать разработчиков:
https://opencollective.com/yiisoft
加入频道
⚡️ #yiisoftInjector

В пакете Yii Injector у метода Injector::make() объявлен тип возвращаемого значения object и добавлены psalm-аннотации, позволяющие анализатору понять экземпляром какого конкретно класса является возвращаемый объект (PR).
⚡️ #yiisoftForm #yiisoftYiIBulma #yiisoftYiiBootstrap5 #yiisoftDemo

Выполнен рефакторинг всех виджетов в пакете Yii Form (PR).

• Серьёзно подчищен, а в некоторых местах и переписан, код всего пакета.

• Для генерации HTML-кода используются теги из пакета Yii HTML.

• Подчищены тесты. Для тестирования используются вспомогательные классы из Yii Test Support.

• Исправлены ошибки psalm, уровень psalm повышен до 1.

• MSI увеличен до 89,1%.

Для адаптации к этим изменениям внесены соответствующие правки в конфигурации Yii Bulma (PR) и Yii Bootstrap 5 (PR), а также в в демо веб-приложения (PR).
⚡️ #yiisoftYiiCycle

В пакете Yii Cycle добавлена ветка 2.0, работающая с Cycle ORM версии 2, которая сейчас находится в стадии активной разработки (PR).

Установка:
composer require yiisoft/yii-cycle "2.0.x-dev"

Информацию на русском о новой версии Cycle ORM можно почитать в gist о Cycle ORM v2.
⚡️ #yiisoftRouter

В классе CurrentRoute (пакет Yii Router) добавлен метод getName(), возвращающий имя текущего роута (PR).
⚡️#yiisoftYiiConsole

В консоли Yii Console добавлена поддержка алиасов для команд (PR).

Теперь имя и алиасы команды задаются в конфигурации пакета, а имя и алиасы из класса команды игнорируются. В том числе это позволяет удобно указать в приложении свои имя и алиасы для команд, предоставляемых пакетами.

Имя и алиасы задаются в виде строки, разделённой вертикальной чертой |. Если строка начинается с вертикальной черты, то команда помечается как скрытая, то есть она не выводится в списке команд, но может быть вызвана.

Примеры:

// Имя `hello`; алиасов нет
'hello' => HelloCommand::class,

// Имя `start`; алиасы `run`, `s`, `r`
'start|run|s|r' => StartCommand::class,

// Скрытая команда; имя `hack`; алиас `h`
'|hack|h' => HackCommand::class,
⚡️ #yiisoftYiiDbMigration

Выполнен рефакторинг в пакете Yii DB Migration (PR):

- удалён класс ConsoleHelper;

- весь вывод в консоль теперь идёт через OutputInterface, передаваемый в команду (ранее часть вывода шла через создаваемый в ConsoleHelper объект, реализующий OutputInterface).
⚡️ #yiisoftDemoApi

В демо API-приложения не проходили тесты, исправили (PR).
⚡️ #yiisoftApp

В шаблоне веб-приложения адаптировали пример консольной команды к «ленивой» загрузке команд в консоли (PR).
⚡️ #yiisoftYiiDbMigration

В пакете Yii DB Migration исправлена ошибка в команде database/list (PR): если база данных содержит несколько схем (например, в PostgreSQL), то команда завершалась с ошибкой.
⚡️ #yiisoftFiles

В пакете Yii Files в readme улучшен пример с выборкой файлов по фильтру и доработан doc-блок метода PathMatcher::except() (PR).

Спасибо Tomasz Kane за PR 👍
#yiisoftDataDb

Создан новый пакет Yii Data DB, который будет содержать реализации интерфейсов из Yii Data для работы с базами данных.
⚡️ #yiisoftApp

В шаблоне веб-приложения вместо глобальных констант (YII_ENV,YII_DEBUG, …) теперь используются переменные окружения с помощью пакета vlucas/phpdotenv (PR).
⚡️ #yiisoftDb #yiisoftDbMysql #yiisoftDbSqlite #yiisoftDbMssql #yiisoftDbPgsql #yiisoftDbOracle

Выполнен рефакторинг и внесли несколько улучшений в пакет Yii DB (PR, PR):

• убрали зависимость от фабрики Yii Factory;

• логгер и профайлер теперь опциональны;

• в интерфейсе QueryInterface добавлен метод select();

• для тестирования расширений добавлен трейт TestTrait.

Расширения под конкретные БД адаптированы к этим изменениям:

- Yii DB MySQL Extension (PR, PR)
- Yii DB SQLite Extension (PR, PR)
- Yii DB MSSQL Server Extension (PR)
- Yii DB PostgreSQL Extension (PR)
- Yii DB Oracle Extension (PR)
⚡️ #yiisoftYiiDbMigration

Улучшили конфигурация пакета Yii DB Migration (PR). Теперь класс View, необходимый для работы сервиса генерации миграции, создаётся в самом сервисе, а не запрашивается из контейнера.
⚡️ #yiisoftDataDb

В пакете Yii Data DB добавлен QueryDataReader, реализующий DataReaderInterface из пакета Yii Data (PR, PR, PR).

Спасибо @Gerych1984 за PR 👍
⚡️ #yiisoftLogTargetDb

Поправили тесты в пакете Yii Logging DB Target (PR).
⚡️ #yiisoftTranslatorMessagePhp

В пакете Yii Translator PHP Message Storage добавлена валидация локали при получении пути к файлу с сообщениями (PR).
⚡️ #yiisoftTranslatorMessageGettext

В пакете Yii Translator gettext Message Storage удалили статический анализатор Phan (PR).
⚡️ #yiisoftRbac

В библиотеке Yii Role-Based Access Control разделили хранилища для ролей/прав и их назначений пользователям (PR).

Частый случай, когда роли и права в приложении — это статическая информация, которая может хранится в PHP-файлах, а данные о присвоении ролей/прав пользователям — динамическая, которая хранится в базе данных.
⚡️ #yiisoftDb

В пакете Yii DB Исправлена некорректная типизация аргументов и результата в методе TableSchema::getColumn() (PR).

getColumn(?string $name): ColumnSchema

getColumn(string $name): ?ColumnSchema
⚡️ #yiisoftDataDb

Оформили readme и composer.json в пакете Yii Data DB + немного поправили фильтры (PR).

Пакет добавлен на Packagist и доступен для установки через composer.