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

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

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

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

Патч-релиз Yii Event 1.0.2

В случаях, когда используется некорректный слушатель, выводится более подробное сообщение об ошибке.

Примеры новых сообщений:

"__invoke" method is not defined in "App\Events\MyEvent" class.

Failed to instantiate "App\Events\MyEvent" class.

Could not instantiate "App\Events\MyEvent" or "handle" method is not defined in this class.

"handle" method is not defined in "App\Events\MyEvent" class.

Listener must be a callable. Got App\Events\MyEvent.
⚡️ #yiisoftYiiDevTool

Исправлена ошибка в Yii Development Tool: при использовании команды composer/update вместо composer update выполнялось composer install (PR).
⚡️ #yiisoftApp

Небольшие улучшения в шаблоне веб-приложения (PR):
- значение константы YII_DEBUG получаемое из переменной окружения приводится к булеву типу;
- точки входа добавлены в статический анализ;
- мелкий рефакторинг и исправление ошибок psalm в точках входа.
⚡️ #yiisoftYiiDbMigration

Исправлена ошибка в консольной команде migrate/update пакета Yii DB Migration (PR).

В случае, когда нет миграций для выполнения, команда возвращала код 1 (UNSPECIFIED ERROR) вместо 0 (OK).
⚡️ #yiisoftDefinitions

Рефакторинг в пакете Yii Definitions: кэширование зависимостей перемещено из ArrayDefinitionBuilder в DefinitionExtractor (PR).
⚡️ #yiisoftYiiDataview

В виджете GridView из пакета Yii Data Widgets исправлен некорректный вывод тега <colgroup> (PR).

<colgroup> выводится в случаях, если у колонок есть опции, и содержит в себе теги <col>. До этого PR содержимое <colgroup> экранировалось, то есть вместо тегов <col ...> выводилось &lt;col ...&gt;. Cейчас экранирование отключили.
⚡️ #yiisoftHtml

В пакете Yii HTML добавлен класс для тега <noscript> и возможность добавить <noscript> к тегу <script> (PR).

Например:

// <script>...</script><noscript><img src="pixel.png"></noscript>
echo Script::tag()->content('...')->noscript(Img::tag()->src('pixel.png'));
⚡️ #yiisoftYiiDbMigration

Исправлена ошибка в пакете Yii DB Migration, возникающая при указании лимита (--limit) в командах migrate/down, migrate/redo и migrate/history (PR).
🎁 #yiisoftHtml #Релиз #МинорныйРелиз

Минорный релиз Yii HTML 2.1.0

• Добавлен класс для тега <noscript> и возможность добавить <noscript> к тегу <script>.
⚡️ #yiisoftFactory

Сделали очередной рефакторинг в Yii Factory (DependencyResolver переделан в FactoryContainer) и добавили тестов (PR).
⚡️ #yiisoftYiiDbMigration

Улучшения консольной команды migrate/down в пакете Yii DB Migration (PR):

- для опционального параметра --limit задано значение по умолчанию 1;

- добавлен флаг --all, включение которого приводит к откату всех миграций.
⚡️ #yiisoftDefinitions

В пакете Yii Definitions добавлена документация и описания в doc-блоки в коде (PR).
⚡️ #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), то команда завершалась с ошибкой.