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

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

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

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

Патч-релиз диспетчера событий Yii Event Dispatcher 1.0.1 (PR).

• Добавлена поддержка слушателей с объединённым типом события.

Например:
$listenerCollection->add(
static function (EventA|EventB $event): void {}
);

• В методе ListenerCollection::add() добавлена возможность добавлять одного слушателя сразу к нескольким событиям.

Например:
$listenerCollection->add(
$listener,
EventA::class,
EventB::class
);

Спасибо @ncou за обнаруженную ошибку с объединённым типом события.
⚡️ #yiisoftWidget

В виджете Menu (пакет Yii Widget) в публичных методах Menu::currentPath(), Menu::firstItemCssClass() и Menu::lastItemCssClass() в качестве аргумента запрещено передавать null, можно передавать только строку (PR).

+ Небольшие улучшения в doc-блоках.
⚡️ #yiisoftDi

В пакете Yii Dependency Injection удалён контекстный контейнер, так как нигде не используется (PR).
⚡️ #yiisoftYiiDevTool

В инструменте для разработки Yii Dev Tool пакеты теперь обрабатываются в алфавитном порядке (PR).
⚡️ #yiisoftYiiSentry

Первый строчки кода в пакете Yii Sentry (PR): реализована мидлварь для перехвата исключений и добавлена конфигурация контейнера.
⚡️ #yiisoftPackageTemplate

В пакете-шаблоне Yii Package Template подготовили конфигурации GitHub Actions для ежедневного запуска (PR).

Это позволит оперативно узнавать о том, что в пакете что-то сломалось из-за изменений в зависимостях.
⚡️ #yiisoftProxy

В пакете Yii Proxy исправлена ошибка с некорректным проксированием исключений, что в некоторых случаях приводило к дублированию текста ошибки (PR).

Спасибо @mahmud128 за обнаруженную проблему.
⚡️ #yiisoftYiiDevTool

В Yii Dev Tool добавлен пакет Yii Sentry (PR).
⚡️ #yiisoftFactory

В пакете Yii Factory из конфигурации автодополнения для PhpStorm (файл .phpstorm.meta.php) удалены настройки для удалённого ранее метода Factory::get() (PR).
⚡️ #yiisoftPackageTemplate

В пакете-шаблоне Yii Package Template улучшен шаблон сообщения к пул-реквесту на GitHub (PR): закомментирована строка с инструкцией по заполнению поля «исправленные проблемы».
⚡️ #yiisoftApp #yiisoftAppApi

В шаблонах приложений Yii Application Template (PR) и Yii API Template (PR) конфигурация PSR-17 (фабрики HTTP-объектов) перенесена из web-конфигурации в общую конфигурацию, так как эти фабрики могут потребовать везде, где используется HTTP-клиент, а он требуется не только в web-приложении, но, в некоторых случаях, и в консольных командах.
⚡️ #yiisoftYiiSentry

В пакете Yii Sentry добавлен перехват исключений в консольном приложении (PR).
⚡️ #yiisoftFactory

В Yii Factory добавлены дополнительные тесты (PR).

В процессе разработки фабрики и контейнера зависимостей большинство тестов были сделаны именно в контейнере. В рамках этого пул-реквеста добавили много аналогичных тестов для фабрики. Помимо увеличения покрытия кейсов использования тестами, это позволило выявить несколько проблем в фабрике (см. issues).
⚡️ #yiisoftFactory

В Yii Factory для метода Factory::create() добавлены psalm-аннотации, позволяющие анализатору понять тип возвращаемого объекта, если в качестве конфигурации передано имя класса (PR).

Например:

// return instance of class "Car"
$factory->create(Car::class);

// return mixed
$factory->create(['class' => Car::class]);

// return mixed
$factory->create('car');
⚡️ #yiisoftProxy

В пакете Yii Proxy откатили PR, который исправлял ошибку с некорректным проксированием исключений. Решение подразумевало клонирование объекта-исключения, но оказалось это вызывает ошибку. Будем думать как сделать по другому.
⚡️ #yiisoftView

В пакете Yii View в методах View::getCommonParameter() и WebView::getCommonParameter() добавлена поддержка второго параметра, задающего значение "по-умолчанию" (PR).

При этом если значение "по-умолчанию" не передано, а запрашиваемый параметр не существует, то будет выброшено исключение InvalidArgumentException.

Примеры:

$view->setCommonParameters([
'name' => 'Vasya',
]);

// return "Vasya"
$view->getCommonParameter('name');

// return "Vasya"
$view->getCommonParameter('name', 'Kolya');

// throw InvalidArgumentException
$view->getCommonParameter('age');

// return 42
$view->getCommonParameter('age', 42);
⚡️ #yiisoftFactory

В пакете Yii Factory несколько улучшений, связанных с дефинишенами (PR).

• В дефинишенах, заданных массивом, теперь можно не прописывать класс, если идентификатор дефинишена является именем класса (в DI-контейнере это так и работало, а вот в фабрике это не поддерживалось). Пример:

ContactMailer::class => [
// Ранее, если не указать класс, то фабрика кидала исключение
// 'class' => ContactMailer::class,
'__construct()' => [
'to' => '[email protected]',
],
],

• Исправлена ошибка: в случаях, когда в фабрику не передавался контейнер для разрешения зависимостей (то есть зависимости разрешает сама фабрика), для зависимостей не использовались дефинишены фабрики. Теперь используются.
⚡️ #yiisoftWidget

В пакете Yii Widget улучшен пример использования в виджете Breadcrumbs + сделаны небольшие изменения в psalm-аннотациях (PR).
⚡️ #yiisoftView

В документации Yii View дополнен блок про использование методов hasCommonParameter() и getCommonParameter() + сделаны небольшие изменения в psalm-аннотациях (PR).
⚡️ #yiisoftDocs

Исправлены битые ссылки в документации в разделе "Running Applications" (PR).

Спасибо Andrew за пул-реквест 👍
⚡️ #yiisoftConfig

В пакете Yii Config увеличена минимальная требуемая версия Composer до 2.0 (PR).