⚡️ #yiisoftYiiWidgets
Доработали виджеты из пакета Yii Widgets (PR).
• Добавили иммутабельность для всех виджетов.
• Изменения в методах виджета
-
• В виджете
Доработали виджеты из пакета Yii Widgets (PR).
• Добавили иммутабельность для всех виджетов.
• Изменения в методах виджета
Breadcrumbs
:-
encodeLabels()
→ withoutEncodeLabels()
- homeLink()
→ withoutHomeItem()
+ homeItem()
- links()
→ items()
• В виджете
ContentDecorator
метод params()
переименован в parameters()
.⚡️ #yiisoftYiiWidgets #yiisoftYiiBulma
В виджетах "Хлебные крошки" из пакетов Yii Widgets (PR) и Yii Bulma (PR) внесены изменения в публичные методы, касающиеся элемента "домашняя страница".
• Удалён метод
• В метод
В виджетах "Хлебные крошки" из пакетов Yii Widgets (PR) и Yii Bulma (PR) внесены изменения в публичные методы, касающиеся элемента "домашняя страница".
• Удалён метод
Breadcrumbs::withoutHomeItem()
;• В метод
Breadcrumbs::homeItem()
разрешено передавать null
(при передаче пустого массива будет вызвано исключение).⚡️ #yiisoftYiiWidgets
Добавили документацию к пакету Yii Widgets (PR) и почистили код (PR):
- вместо
- уровень psalm повышен до 2;
- добавлено ещё немного тестов;
- улучшены описания в phpdoc;
- исключены все служебные файлы при создании архива репозитория;
- улучшены конфигурации GitHub Workflow и другие служебные файлы.
Добавили документацию к пакету Yii Widgets (PR) и почистили код (PR):
- вместо
yiisoft/event-dispatcher
в dev-зависимостях теперь используется yiisoft/psr-dummy-provider
;- уровень psalm повышен до 2;
- добавлено ещё немного тестов;
- улучшены описания в phpdoc;
- исключены все служебные файлы при создании архива репозитория;
- улучшены конфигурации GitHub Workflow и другие служебные файлы.
⚡️ #yiisoftYiiBootstrap5
В пакете Yii Bootstrap 5 удалён класс
В Bootstrap 5 выделили иконки в отдельный независимый пакет Bootstrap Icons. Сам Bootstrap 5 может использовать как Bootstrap Icons, так и любой другой набор иконок.
В пакете Yii Bootstrap 5 удалён класс
BootstrapIconsAsset
и зависимость от npm-asset/bootstrap-icons
(PR). В Bootstrap 5 выделили иконки в отдельный независимый пакет Bootstrap Icons. Сам Bootstrap 5 может использовать как Bootstrap Icons, так и любой другой набор иконок.
⚡️ #yiisoftDocs
Исправлены опечатки и битые ссылки в документации (PR, PR, PR).
Спасибо Toir Tuychiev за пул-реквесты 👍
Исправлены опечатки и битые ссылки в документации (PR, PR, PR).
Спасибо Toir Tuychiev за пул-реквесты 👍
⚡️ #yiisoftRouter #yiisoftRouterFastroute
В Yii Router изменён класс
•
• Все публичные методы
• Создан отдельный класс
• Увеличено покрытие кода тестами.
Соответствующие изменения внесены в Yii Router FastRoute Adapter (PR).
В Yii Router изменён класс
Group
, реализующий работу с группой роутов (PR).•
Group
теперь реализует новый интерфейс GroupInterface
.• Все публичные методы
Group
сделаны иммутабельными.• Создан отдельный класс
RouteCollector
, реализующий интерфейс коллекции роутов RouteCollectorInterface
.• Увеличено покрытие кода тестами.
Соответствующие изменения внесены в Yii Router FastRoute Adapter (PR).
⚡️ #yiisoftView
В пакете Yii View финализированы классы (PR):
-
В пакете Yii View финализированы классы (PR):
-
Yiisoft\View\Event\WebView\BeforeRender
- Yiisoft\View\Event\WebView\BodyBegin
- Yiisoft\View\Event\WebView\BodyEnd
- Yiisoft\View\Event\WebView\PageBegin
- Yiisoft\View\Event\WebView\PageEnd
- Yiisoft\View\Exception\ViewNotFoundException
⚡️ #yiisoftData
В пакете Yii Data исправлена ошибка в работе iterable-процессоров, приводящая к выбрасыванию исключения при проверке несуществующего поля (PR).
В рамках этого же пул-реквеста исправлены ошибки статического анализа psalm.
В пакете Yii Data исправлена ошибка в работе iterable-процессоров, приводящая к выбрасыванию исключения при проверке несуществующего поля (PR).
В рамках этого же пул-реквеста исправлены ошибки статического анализа psalm.
⚡️ #yiisoftFactory #yiisoftDi #yiisoftDb
Удалена реализация фабрикой из Yii Factory интерфейса
Теперь фабрика предоставляет только три публичных метода:
К этим изменениям потребовалось также адаптировать пакеты Yii Dependency Injection (PR) и Yii DB (PR).
Удалена реализация фабрикой из Yii Factory интерфейса
ContainerInterface
(PR), соответственно удалены методы Factory::get()
и Factory::has()
. Теперь фабрика предоставляет только три публичных метода:
Factory::create()
— создание объектов;Factory::set()
— установка дефинишена;Factory::setMultiple()
— массовая установка дефинишенов.К этим изменениям потребовалось также адаптировать пакеты Yii Dependency Injection (PR) и Yii DB (PR).
⚡️ #yiisoftRequirements
В пакете Yii Requirements Checker обновлены dev-зависимости:
-
-
В пакете Yii Requirements Checker обновлены dev-зависимости:
-
roave/infection-static-analysis-plugin
до ^1.9
(PR),-
vimeo/psalm
до ^4.8
(PR).⚡️ #yiisoftFactory #yiisoftWidget
В пакете Yii Factory удалён интефейс
Интерфейс имел только одну реализацию в виде самой фабрики
Интерфейс использовался в фабрике из пакета Yii Widget, но здесь удалось его убрать небольшим рефакторингом (PR).
В пакете Yii Factory удалён интефейс
FactoryInterface
(PR).Интерфейс имел только одну реализацию в виде самой фабрики
Yiisoft\Factory\Factory
, других реализаций не подразумевалось, поэтому интерфейс не нужен.Интерфейс использовался в фабрике из пакета Yii Widget, но здесь удалось его убрать небольшим рефакторингом (PR).
⚡️ #yiisoftHtml
Для тегов из Yii HTML разрешено передавать
-
-
-
-
Важно понимать отличие
Примеры:
Для тегов из Yii HTML разрешено передавать
null
в методы (PR):-
Tag::class()
,-
Tag::replaceClass()
,-
BooleanInputTag::label()
,-
BooleanInputTag::sideLabel()
.Важно понимать отличие
null
и пустой строки. Это очень разные по своей сути значения. null
обозначает отсутствие чего-либо, а пустая строка — существование, но с пустым значением.Примеры:
// <br>
echo Br::tag()->class(null);
// <br class="">
echo Br::tag()->class('');
// <input type="checkbox">
echo Checkbox::tag()->label(null);
// <label><input type="checkbox"></label>
echo Checkbox::tag()->label('');
⚡️ #yiisoftWidget
Фабрика виджетов
Это позволит в дальнейшем финализировать класс
Фабрика виджетов
WidgetFactory
из Yii Widget вместо наследования от Yiisoft\Factory\Factory
теперь использует композицию (PR).Это позволит в дальнейшем финализировать класс
Yiisoft\Factory\Factory
.⚡️ #yiisoftFactory
Фабрика из Yii Factory при разрешении ссылок (
Пример:
Таким образом контейнер используется только для разрешения зависимостей.
Фабрика из Yii Factory при разрешении ссылок (
Reference
) теперь не использует контейнер (PR).Пример:
$factory = new Factory(До PR фабрика не находила
new SimpleContainer([
EngineInterface::class => new EngineMarkOne(),
]),
[
'engine' => Reference::to(EngineInterface::class),
]
);
$engine = $factory->create('engine');
EngineInterface
в своих дефинишенах и получала его из контейнера, после PR фабрика никогда не ищет ссылки (Reference
) в контейнере и в примере вызовет исключение NotInstantiableException
.Таким образом контейнер используется только для разрешения зависимостей.
⚡️ #yiisoftYiiBulma
Продолжаем наводить красоту в Yii Bulma (PR):
• Переименованы методы:
Продолжаем наводить красоту в Yii Bulma (PR):
• Переименованы методы:
Nav::withoutActivateItems()
→ Nav::deactivateItems()
Tabs::withoutActivateItems()
→ Tabs::deactivateItems()
• Много улучшений в Doc-блоках.⚡️ #yiisoftYiiBulma
Обновлены версии зависимостей в Yii Bulma:
-
-
Обновлены версии зависимостей в Yii Bulma:
-
npm-asset/vizuaalog--bulmajs
до ^0.12.1
(PR),-
npm-asset/bulma-helpers
до ^0.4.0
(PR).⚡️ #yiisoftFactory
Улучшения в пакете Yii Factory (PR):
- финализированы все классы;
- добавлены ещё несколько тестов;
- немного почищен код;
- обновлены dev-зависимости.
Улучшения в пакете Yii Factory (PR):
- финализированы все классы;
- добавлены ещё несколько тестов;
- немного почищен код;
- обновлены dev-зависимости.
🎁 #yiisoftEventDispatcher #Патч
Патч-релиз диспетчера событий Yii Event Dispatcher 1.0.1 (PR).
• Добавлена поддержка слушателей с объединённым типом события.
Например:
Например:
Патч-релиз диспетчера событий Yii Event Dispatcher 1.0.1 (PR).
• Добавлена поддержка слушателей с объединённым типом события.
Например:
$listenerCollection->add(• В методе
static function (EventA|EventB $event): void {}
);
ListenerCollection::add()
добавлена возможность добавлять одного слушателя сразу к нескольким событиям. Например:
$listenerCollection->add(Спасибо @ncou за обнаруженную ошибку с объединённым типом события.
$listener,
EventA::class,
EventB::class
);
⚡️ #yiisoftWidget
В виджете
+ Небольшие улучшения в doc-блоках.
В виджете
Menu
(пакет Yii Widget) в публичных методах Menu::currentPath()
, Menu::firstItemCssClass()
и Menu::lastItemCssClass()
в качестве аргумента запрещено передавать null
, можно передавать только строку (PR).+ Небольшие улучшения в doc-блоках.
⚡️ #yiisoftDi
В пакете Yii Dependency Injection удалён контекстный контейнер, так как нигде не используется (PR).
В пакете Yii Dependency Injection удалён контекстный контейнер, так как нигде не используется (PR).