⚡️ #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).
⚡️ #yiisoftDemoApi
В bat-файле для запуска консольных команд в демо API-приложения у исполняемого файла
В bat-файле для запуска консольных команд в демо API-приложения у исполняемого файла
php
удалено расширение .exe
(PR).🔥 #Новости
Yii3 получил новый дизайн логотипа, общий гайдлайн и отдельный гайдлайн для диаграмм. Посмотреть можно в разделе Official Logos and Design на официальном сайте фреймворка.
Yii3 получил новый дизайн логотипа, общий гайдлайн и отдельный гайдлайн для диаграмм. Посмотреть можно в разделе Official Logos and Design на официальном сайте фреймворка.
⚡️ #yiisoftDi
Небольшой рефакторинг в Yii Dependency Injection: в финальном классе
Спасибо Леониду Черненко за PR 👍
Небольшой рефакторинг в Yii Dependency Injection: в финальном классе
Container
область видимости protected
методов заменена на private
(PR).Спасибо Леониду Черненко за PR 👍
⚡️ #yiisoftMutexRedis
Навели порядок в пакете Yii Mutex Redis Driver (PR):
- класс мьютекса наследуется от
- подчищен код, улучшены doc-блоки;
- актуализирован readme;
- обновлены dev-зависимости;
- уровень psalm повышен до 1;
- добавлены тесты;
- улучшены конфигурация GitHub Workflow и другие служебные файлы.
Навели порядок в пакете Yii Mutex Redis Driver (PR):
- класс мьютекса наследуется от
Mutex
из основного пакета;- подчищен код, улучшены doc-блоки;
- актуализирован readme;
- обновлены dev-зависимости;
- уровень psalm повышен до 1;
- добавлены тесты;
- улучшены конфигурация GitHub Workflow и другие служебные файлы.
⚡️ #yiisoftYiiDevTool
В инструменте для разработки Yii Dev Tool исправлена ошибка, возникающая в некоторых случаях при удалении символических ссылок в WIndows (PR).
В инструменте для разработки Yii Dev Tool исправлена ошибка, возникающая в некоторых случаях при удалении символических ссылок в WIndows (PR).
⚡️ #yiisoftYiiDevTool
В инструменте для разработки Yii Dev Tool переименованы команды (PR):
•
•
В инструменте для разработки Yii Dev Tool переименованы команды (PR):
•
list
→ list-commands
Вывод списка доступных команд. Это команда по-умолчанию.•
list-packages
→ list
Вывод списка активных пакетов.⚡️ #yiisoftRouter #yiisoftRouterFastroute #yiisoftYiiDebug #yiisoftApp #yiisoftDemo
В Yii Router методы для получения информации о текущем роуте вынесены из интерфейса
Текущие роут и URI можно получить из
- Yii Router FastRoute Adapter (PR).
- Yii Debug (PR),
- шаблон веб-приложения (PR),
- демо веб-приложения (PR).
В Yii Router методы для получения информации о текущем роуте вынесены из интерфейса
UrlMatcherInterface
в отдельный класс CurrentRoute
(PR).Текущие роут и URI можно получить из
CurrentRoute
, например:use Psr\Http\Message\UriInterface;Соответствующие изменения внесены в пакеты:
use Yiisoft\Router\CurrentRoute;
use Yiisoft\Router\RouteParametersInterface;
final class MyClass {
private ?RouteParametersInterface $currentRoute;
private ?UriInterface $currentUri;
public function __construct(CurrentRoute $currentRoute) {
$this->currentRoute = $currentRoute->getRoute();
$this->currentUri = $currentRoute->getUri();
}
}
- Yii Router FastRoute Adapter (PR).
- Yii Debug (PR),
- шаблон веб-приложения (PR),
- демо веб-приложения (PR).
🎁 #yiisoftMutex #yiisoftMutexFile #yiisoftMutexPdoMysql #yiisoftMutexPdoPgsql #yiisoftMutexPdoOracle #yiisoftMutexRedis #Релиз #ПервыйРелиз
Первый релиз Yii Mutex 1.0.0 (новость на yiiframework.com).
Этот пакет, используя механизм блокировки, обеспечивает взаимное исключение исполнения критических участков кода в «состоянии гонки». Доступны несколько вариантов использования.
1) Запуск callback-функции в синхронизированном режиме (в один момент времени выполняется только один экземпляр callback-функции) с помощью класса
- File Driver 1.0.0
- MySQL PDO Driver 1.0.0
- Postgres PDO Driver 1.0.0
- Oracle PDO Driver 1.0.0
- Redis Driver 1.0.0
Первый релиз Yii Mutex 1.0.0 (новость на yiiframework.com).
Этот пакет, используя механизм блокировки, обеспечивает взаимное исключение исполнения критических участков кода в «состоянии гонки». Доступны несколько вариантов использования.
1) Запуск callback-функции в синхронизированном режиме (в один момент времени выполняется только один экземпляр callback-функции) с помощью класса
Synchronizer
:/** @var \Yiisoft\Mutex\Synchronizer $synchronizer */2) Установка и снятие блокировки вручную с помощью класса
$newCount = $synchronizer->execute('critical_logic', function () {
return $counter->increase();
}, 10);
SimpleMutex
:/** @var \Yiisoft\Mutex\SimpleMutex $simpleMutex */3) Ручное создание мьютекса и управление им:
if (!$simpleMutex->acquire('critical_logic', 1000)) {
throw new \RuntimeException('Unable to acquire "critical_logic" mutex.');
}
$newCount = $counter->increase();
$simpleMutex->release();
/** @var \Yiisoft\Mutex\MutexFactoryInterface $mutexFactory */или вариант с полным контролем:
$mutex = $mutexFactory->createAndAcquire('critical', 10);
$newCount = $counter->increase();
$mutex->release();
/** @var \Yiisoft\Mutex\MutexFactoryInterface $mutexFactory */Вместе с основным пакетом зарелизены мьютекс-драйвера:
$mutex = $mutexFactory->create('critical');
if (!$mutex->acquire(10)) {
throw new \RuntimeException('Unable to acquire mutex "critical".');
}
$newCount = $counter->increase();
$mutex->release();
- File Driver 1.0.0
- MySQL PDO Driver 1.0.0
- Postgres PDO Driver 1.0.0
- Oracle PDO Driver 1.0.0
- Redis Driver 1.0.0
⚡️ #yiisoftDi
В пакете Yii Dependency Injection доработана логика работы метода
В случае, когда для запрашиваемого класса не задан дефинишен, метод
В пакете Yii Dependency Injection доработана логика работы метода
Container::has()
(PR).В случае, когда для запрашиваемого класса не задан дефинишен, метод
has()
теперь не просто проверяет существование этого класса, но дополнительно проверяет все зависимости класса — есть ли у контейнера возможность создать запрашиваемый объект.⚡️ #yiisoftDi
Исправлена ошибка в Yii Dependency Injection, возникающая в некоторых случаях при использовании контейнера в Swoole и приводящая к исключению
Спасибо @ChisWill за найденный баг 👍
Исправлена ошибка в Yii Dependency Injection, возникающая в некоторых случаях при использовании контейнера в Swoole и приводящая к исключению
CircularReferenceException
(PR).Спасибо @ChisWill за найденный баг 👍
⚡️ #yiisoftMutex
В пакете Yii Mutex исправлены описания опциональных зависимостей в
В пакете Yii Mutex исправлены описания опциональных зависимостей в
composer.json
(PR).