⚡️ #yiisoftDi
В пакете Yii Dependency Injection исправлена критичная ошибка в бенчмарках (PR): замеры проводилось без получения зависимостей.
В пакете Yii Dependency Injection исправлена критичная ошибка в бенчмарках (PR): замеры проводилось без получения зависимостей.
⚡️ #yiisoftMutex
В пакете Yii Mutex добавлен абстрактный класс
В пакете Yii Mutex добавлен абстрактный класс
Mutex
(реализует MutexInterface
), предоставляющий базовый функционал для создания драйверов (PR).⚡️#yiisoftMutexPdoPgsql
Исправлена опечатка в имени исключения, вызываемого в случае неудачного снятия блокировки в пакете Yii Mutex Postgres PDO Driver (PR).
Спасибо Максиму Сторчаку за выявленную ошибку и PR 👍
Исправлена опечатка в имени исключения, вызываемого в случае неудачного снятия блокировки в пакете Yii Mutex Postgres PDO Driver (PR).
Спасибо Максиму Сторчаку за выявленную ошибку и PR 👍
⚡️ #yiisoftApp #yiisoftAppApi #yiisoftDemo #yiisoftDemoApi
В приложениях конфигурация начальной загрузки (
- шаблон веб-приложения (PR),
- шаблон API-приложения (PR),
- демо веб-приложения (PR),
- демо API-приложения (PR).
В приложениях конфигурация начальной загрузки (
bootstrap
) разделена на общую, консольную и web-части: - шаблон веб-приложения (PR),
- шаблон API-приложения (PR),
- демо веб-приложения (PR),
- демо API-приложения (PR).
Bootstrap
представляет собой массив функций (точнее callable
) вида function (ContainerInterface $container): void
, которые последовательно будут вызваны при запуске приложения.⚡️ #yiisoftFactory
Подчистили код ссылок (
• Удалён метод
• Изменён тип результата в методах
• Улучшены описания в doc-блоках.
Подчистили код ссылок (
Reference
) в Yii Factory (PR):• Удалён метод
Reference::getId()
(нигде не использовался).• Изменён тип результата в методах
Reference::to()
и DynamicReference::to()
с ReferenceInterface
на self
.• Улучшены описания в doc-блоках.
⚡️ #yiisoftDi #yiisoftDataResponse
В пакете Yii Dependency Injection добавлены хелперы
Хелперы удобно использовать в конфигурациях. Так, в пакете Yii Data Response вынесли форматеры мидлвари
Было:
В пакете Yii Dependency Injection добавлены хелперы
ReferencesArray
и DynamicReferencesArray
для создания массива обычных (Reference
) и динамических (DynamicReference
) ссылок соответственно (PR).Хелперы удобно использовать в конфигурациях. Так, в пакете Yii Data Response вынесли форматеры мидлвари
ContentNegotiator
в параметры, используя класс DynamicReferencesArray
(PR).Было:
// Конфигурация web.phpСтало:
ContentNegotiator::class => [
'__construct()' => [
'contentFormatters' => [
'text/html' => new HtmlDataResponseFormatter(),
'application/xml' => new XmlDataResponseFormatter(),
'application/json' => new JsonDataResponseFormatter(),
],
],
],
// Конфигурация web.php
ContentNegotiator::class => [
'__construct()' => [
'contentFormatters' => DynamicReferencesArray::from($params['yiisoft/data-response']['contentFormatters']),
],
],
// Параметры params.php
'yiisoft/data-response' => [
'contentFormatters' => [
'text/html' => HtmlDataResponseFormatter::class,
'application/xml' => XmlDataResponseFormatter::class,
'application/json' => JsonDataResponseFormatter::class,
],
],
⚡️ #yiisoftFactory
Небольшой рефакторинг в Yii Factory: в классе
Небольшой рефакторинг в Yii Factory: в классе
Factory
приватное свойство $container
переименовано в более логичное $dependencyResolver
(PR).⚡️ #yiisoftFactory
Несколько доработок в Yii Factory (PR):
• При разрешении зависимостей фабрика теперь не пытается передать
• Исключение
• Добавлено исключение
• В GitHub Actions добавлен статический анализ в PHP 8.
На картинке изображена диаграмма классов исключений из пакета Yii Factory на данный момент.
Несколько доработок в Yii Factory (PR):
• При разрешении зависимостей фабрика теперь не пытается передать
null
для параметров, которые не поддерживают его, а сразу кидает исключение. Аналогично будет работать в контейнере зависимостей, так как в этой части он использует код из Yii Factory.• Исключение
CircularReferenceException
теперь наследуется от NotInstantiableException
.• Добавлено исключение
NotInstantiableClassException
.• В GitHub Actions добавлен статический анализ в PHP 8.
На картинке изображена диаграмма классов исключений из пакета Yii Factory на данный момент.
⚡️ #yiisoftYiiDevTool
Доработан инструмент для разработки Yii Dev Tool: теперь его можно использовать для любого вендора, а не только для
Доработан инструмент для разработки Yii Dev Tool: теперь его можно использовать для любого вендора, а не только для
yiisoft
(PR).⚡️ #yiisoftMutexFile
В пакете Yii Mutex File Driver мьютекс теперь наследуется от абстрактного
В пакете Yii Mutex File Driver мьютекс теперь наследуется от абстрактного
Mutex
из основного пакета + настройки мьютекса перенесены из сеттеров в конструктор (PR).⚡️ #yiisoftMutexPdoMysql
В пакете Yii Mutex MySQL PDO Driver мьютекс теперь наследуется от абстрактного
В пакете Yii Mutex MySQL PDO Driver мьютекс теперь наследуется от абстрактного
Mutex
из основного пакета + в работе драйвера удалена проверка с использованием MySQL-функции IS_FREE_LOCK()
(PR).⚡️ #yiisoftMutexPdoPgsql #yiisoftMutexPdoOracle
Навели порядок в пакетах Yii Mutex Oracle PDO Driver (PR) и Yii Mutex Postgres PDO Driver (PR):
- класс мьютекса наследуется от
- подчищен код, улучшены doc-блоки;
- обновлены dev-зависимости;
- уровень psalm повышен до 1;
- добавлены тесты;
- в файле
- исключены все служебные файлы при создании архива репозитория;
- актуализирован readme;
- улучшены конфигурация GitHub Workflow и другие служебные файлы.
Навели порядок в пакетах Yii Mutex Oracle PDO Driver (PR) и Yii Mutex Postgres PDO Driver (PR):
- класс мьютекса наследуется от
Mutex
из основного пакета;- подчищен код, улучшены doc-блоки;
- обновлены dev-зависимости;
- уровень psalm повышен до 1;
- добавлены тесты;
- в файле
.editorconfig
добавлена секция *.yml
;- исключены все служебные файлы при создании архива репозитория;
- актуализирован readme;
- улучшены конфигурация GitHub Workflow и другие служебные файлы.
⚡️ #yiisoftEventDispatcher
В пакете Yii Event Dispatcher при добавлении слушателя в коллекцию для случаев, когда не указан тип события в слушателе и когда слушатель не содержит события, выводятся разные сообщения об ошибке (PR).
В пакете Yii Event Dispatcher при добавлении слушателя в коллекцию для случаев, когда не указан тип события в слушателе и когда слушатель не содержит события, выводятся разные сообщения об ошибке (PR).
⚡️ #yiisoftHtml
В пакете Yii HTML добавлен класс
Например:
В пакете Yii HTML добавлен класс
NoEncode
, в который можно обернуть содержимое, которое не должно быть экранировано в HTML-тегах (PR).Например:
// <b><i>hello</i></b>
echo Html::b(NoEncode::string('<i>hello</i>'));
⚡️ #yiisoftHtml
При генерации HTML-тегов в пакете Yii HTML для атрибутов тега с пустым строковым значением теперь будет выводится только название атрибута без значения (PR).
Вместо
Этот код соответствует HTML-спецификации.
При генерации HTML-тегов в пакете Yii HTML для атрибутов тега с пустым строковым значением теперь будет выводится только название атрибута без значения (PR).
Вместо
<tag attr="">
будет генерироваться <tag attr>
. Этот код соответствует HTML-спецификации.
⚡️ #yiisoftArrays
Подчистили хелпер Yii Arrays (PR):
- подчищен код, улучшены doc-блоки;
- обновлены dev-зависимости;
- исправлены ошибки psalm;
- улучшены конфигурация GitHub Workflow и другие служебные файлы.
Подчистили хелпер Yii Arrays (PR):
- подчищен код, улучшены doc-блоки;
- обновлены dev-зависимости;
- исправлены ошибки psalm;
- улучшены конфигурация GitHub Workflow и другие служебные файлы.
🎁 #yiisoftRateLimiter #Релиз #МажорныйРелиз
Мажорный релиз Yii Rate Limiter Middleware 2.0.0
• Добавлен интерфейс
-
-
-
• Добавлен интерфейс
• Для получения текущего времени добавлен интерфейс
• Мидлварь
—————
Обновление с версии 1.*
Нужно обновить инициализирующий код с:
Релиз основан на PR от kafkiansky 👍
Мажорный релиз Yii Rate Limiter Middleware 2.0.0
• Добавлен интерфейс
LimitPolicyInterface
, который позволяет использовать различные политики ограничения на количество запросов. Из коробки предоставляется три реализации:-
LimitAlways
— ограничения применяются для всех запросов;-
LimitPerIp
— ограничение применяется по каждому IP отдельно;-
LimitCallback
— позволяет использовать собственную логику с помощью callback-функции.• Добавлен интерфейс
StorageInterface
для хранение счётчиков запросов. Введение интерфейса даёт возможность реализовать собственные хранилища. Из коробки предоставляется SimpleCacheStorage
использующий для хранения любой PSR-совместимый кэш.• Для получения текущего времени добавлен интерфейс
TimerInterface
. Это позволило переписать тесты не используя usleep()
, что в свою очередь сделало их более стабильными.• Мидлварь
Middleware
переименована в LimitRequestsMiddleware
.—————
Обновление с версии 1.*
Нужно обновить инициализирующий код с:
$cache = new ArrayCache();на:
$counter = new Counter(2, 5, $cache);
$middleware = new Middleware($counter, $responseFactory);
$storage = new SimpleCacheStorage($cache);—————
$counter = new Counter($storage, 2, 5);
$middleware = new LimitRequestsMiddleware($counter, $responseFactory);
Релиз основан на PR от kafkiansky 👍
⚡️ #yiisoftProxy
В пакете Yii Proxy снова исправлена ошибка с некорректным проксированием исключений, что в некоторых случаях приводило к дублированию текста ошибки (PR). Теперь выбрасывается тоже самое исключение без каких-либо изменений.
В пакете Yii Proxy снова исправлена ошибка с некорректным проксированием исключений, что в некоторых случаях приводило к дублированию текста ошибки (PR). Теперь выбрасывается тоже самое исключение без каких-либо изменений.
⚡️ #yiisoftDb
Фабрика
Наследование невозможно, так как фабрика в Yii Factory ранее была финализирована.
Фабрика
DatabaseFactory
в Yii DB вместо наследования от Yiisoft\Factory\Factory
теперь использует композицию (PR). Наследование невозможно, так как фабрика в Yii Factory ранее была финализирована.
⚡️ #yiisoftMutexFile #yiisoftMutexPdoMysql #yiisoftMutexPdoPgsql #yiisoftMutexPdoOracle
В мьютекс-драйверах в readme добавлена документация по использованию:
- File Driver (PR),
- MySQL PDO Driver (PR),
- Postgres PDO Driver (PR),
- Oracle PDO Driver (PR).
В мьютекс-драйверах в readme добавлена документация по использованию:
- File Driver (PR),
- MySQL PDO Driver (PR),
- Postgres PDO Driver (PR),
- Oracle PDO Driver (PR).