⚡️ #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).⚡️ #yiisoftRouter #yiisoftRouterFastroute
В Yii Router улучшена работа с хранением текущего роута (PR).
• Значения в
• При попытке повторной установки значений в
• В конфигурации
В Yii Router улучшена работа с хранением текущего роута (PR).
• Значения в
CurrentRoute
устанавливаются в самом роутере Yiisoft\Router\Middleware\Router
, что позволило снять эту задачу с адаптеров. В адаптере Yii Router FastRoute Adapter был удалён соответствующий код (PR).• При попытке повторной установки значений в
CurrentRoute
будет выброшено исключение RuntimeException
.• В конфигурации
CurrentRoute
добавлен сброс состояния.⚡️ #yiisoftHtml
В виджетах
Добавлены методы:
-
-
-
-
В виджетах
CheckboxList
и RadioList
из пакета Yii HTML добавлена поддержка индивидуальных атрибутов для чекбоксов и радиокнопок соответственно (PR).Добавлены методы:
-
CheckboxList::individualInputAttributes()
,-
CheckboxList::replaceIndividualInputAttributes()
,-
RadioList::individualInputAttributes()
,-
RadioList::replaceIndividualInputAttributes()
.⚡️ #yiisoftDocs
Регламентировали порядок изменений в файле
•
•
•
•
Регламентировали порядок изменений в файле
changelog
в соответствии с их типом (см. соглашение о формате файлов changelog и upgrade):•
New
— новые фичи;•
Chg
— общие изменения;•
Enh
— улучшение существующих фич;•
Bug
— исправление ошибок.✨ #yiisoftMailerSymfony
Создан новый пакет Yii Mailer Symfony Extension. Это расширение к библиотеке Yii Mailer, позволяющее использовать Symfony Mailer для отправки писем.
В настоящий момент в Yii3 для отправки писем есть только Yii Mailer Swiftmailer Extension. В статье The end of Swiftmailer Fabien Potencier объявил о прекращении поддержки Swiftmailer в конце ноября 2021 года (Пётр Мязин перевёл эту статью: Swiftmailer умер, да здравствует Symfony Mailer!). Поэтому было принято решение создать расширение для отправки писем с помощью Symfony Mailer.
Создан новый пакет Yii Mailer Symfony Extension. Это расширение к библиотеке Yii Mailer, позволяющее использовать Symfony Mailer для отправки писем.
В настоящий момент в Yii3 для отправки писем есть только Yii Mailer Swiftmailer Extension. В статье The end of Swiftmailer Fabien Potencier объявил о прекращении поддержки Swiftmailer в конце ноября 2021 года (Пётр Мязин перевёл эту статью: Swiftmailer умер, да здравствует Symfony Mailer!). Поэтому было принято решение создать расширение для отправки писем с помощью Symfony Mailer.
⚡️ #yiisoftUser
В пакете Yii User в конфигурации класса
Сброс состояния необходим для долгоживущих приложений, работающих в event-loop (RoadRunner, Swoole и др.).
В пакете Yii User в конфигурации класса
CurrentUser
добавлен сброс состояния: сбрасывается текущая идентичность пользователя (PR).Сброс состояния необходим для долгоживущих приложений, работающих в event-loop (RoadRunner, Swoole и др.).
⚡️ #yiisoftConfig
В пакете Yii Config объединение конфигурации рекурсивно выполняется только для тех конфигов, которые будут указаны в конструкторе
Например:
—————
#yiisoftApp #yiisoftAppApi #yiisoftDemo #yiisoftDemoApi
Все приложения адаптированы под это изменение:
- шаблон веб-приложения (PR),
- шаблон API-приложения (PR),
- демо веб-приложения (PR),
- демо API-приложения (PR).
В пакете Yii Config объединение конфигурации рекурсивно выполняется только для тех конфигов, которые будут указаны в конструкторе
\Yiisoft\Config\Config
, все остальные конфигурации будут объединяться без рекурсии (PR).Например:
$config = new \Yiisoft\Config\Config(Рекурсивно будут объединены конфигурации
dirname(__DIR__),
'/config/packages',
'dev',
[
'params',
'events',
'events-web',
'events-console',
],
);
params
, events
, events-web
, events-console
. Все остальные конфигурации (например, common
, providers
, bootstrap
и т. д.) будут объединены не рекурсивно.—————
#yiisoftApp #yiisoftAppApi #yiisoftDemo #yiisoftDemoApi
Все приложения адаптированы под это изменение:
- шаблон веб-приложения (PR),
- шаблон API-приложения (PR),
- демо веб-приложения (PR),
- демо API-приложения (PR).
🎁 #yiisoftHtml #Релиз #МажорныйРелиз
Мажорный релиз Yii HTML 2.0.0
• Добавлены классы для тегов
• В классе тега
• В виджетах
-
-
-
-
• Для тегов разрешено передавать
-
-
-
-
Соответствующие атрибуты не будут сгенерированы.
• Добавлен класс
• Пустые строковые значения атрибутов теперь не выводятся.
• В порядок вывода атрибутов в теге добавлен атрибут
—————
#yiisoftView #yiisoftYiiView #yiisoftViewTwig #yiisoftMailer #yiisoftMailerSwiftmailer #yiisoftLogTargetEmail
Адаптационные релизы к Yii HTML:
- Yii View 2.0.0
- Yii View Extension 2.0.0
- Yii View Twig Renderer 2.0.0
- Yii Mailer 2.0.0
- Yii Mailer Swiftmailer Extension 2.0.0
- Yii Logging Email Target 2.0.0
—————
#yiisoftApp #yiisoftDemo
В шаблоне веб-приложения и демо веб-приложения обновлены зависимости.
Мажорный релиз Yii HTML 2.0.0
• Добавлены классы для тегов
Em
, Strong
, B
и I
.• В классе тега
Link
добавлены методы as()
и preload()
.• В виджетах
CheckboxList
и RadioList
добавлена поддержка индивидуальных атрибутов для чекбоксов и радиокнопок соответственно с помощью методов:-
CheckboxList::individualInputAttributes()
,-
CheckboxList::replaceIndividualInputAttributes()
,-
RadioList::individualInputAttributes()
,-
RadioList::replaceIndividualInputAttributes()
.• Для тегов разрешено передавать
null
в методы:-
Tag::class()
,-
Tag::replaceClass()
,-
BooleanInputTag::label()
,-
BooleanInputTag::sideLabel()
.Соответствующие атрибуты не будут сгенерированы.
• Добавлен класс
NoEncode
, в который можно обернуть содержимое, которое не должно быть экранировано в HTML-тегах.• Пустые строковые значения атрибутов теперь не выводятся.
• В порядок вывода атрибутов в теге добавлен атрибут
minlength
.—————
#yiisoftView #yiisoftYiiView #yiisoftViewTwig #yiisoftMailer #yiisoftMailerSwiftmailer #yiisoftLogTargetEmail
Адаптационные релизы к Yii HTML:
- Yii View 2.0.0
- Yii View Extension 2.0.0
- Yii View Twig Renderer 2.0.0
- Yii Mailer 2.0.0
- Yii Mailer Swiftmailer Extension 2.0.0
- Yii Logging Email Target 2.0.0
—————
#yiisoftApp #yiisoftDemo
В шаблоне веб-приложения и демо веб-приложения обновлены зависимости.
⚡️ #yiisoftDocs
В документации дополнены разделы по работе с event loop (PR):
- Using Yii with event loop,
- Using Yii with RoadRunner,
- Using Yii with Swoole.
В документации дополнены разделы по работе с event loop (PR):
- Using Yii with event loop,
- Using Yii with RoadRunner,
- Using Yii with Swoole.
⚡️ #yiisoftSession
В пакете Yii Session в конфигурации класса
В пакете Yii Session в конфигурации класса
Session
добавлен сброс состояния: выполняется закрытие сессии и сбрасывается её ID (PR).⚡️ #yiisoftEventDispatcher #yiisoftInjector #yiisoftView #yiisoftStrings #yiisoftHtml
Строки в логах изменений расположены в порядке, описанном в соглашении о формате файлов changelog и upgrade (
- Yii Event Dispatcher (PR)
- Yii Injector (PR)
- Yii View (PR)
- Yii Strings (PR)
- Yii HTML (PR)
Строки в логах изменений расположены в порядке, описанном в соглашении о формате файлов changelog и upgrade (
New
, Chg
, Enh
, Bug
):- Yii Event Dispatcher (PR)
- Yii Injector (PR)
- Yii View (PR)
- Yii Strings (PR)
- Yii HTML (PR)
⚡️#yiisoftDemo
В демо веб-приложения в консольных командах для создания пользователя и назначения ему роли добавлена проверка на наличие ID у пользователя (PR).
Спасибо Евгению Ткаченко за PR 👍
В демо веб-приложения в консольных командах для создания пользователя и назначения ему роли добавлена проверка на наличие ID у пользователя (PR).
Спасибо Евгению Ткаченко за PR 👍
⚡️ #yiisoftStrings
В пакете Yii Strings исправлены ошибки psalm и улучшена конфигурация GitHub Workflow (PR):
- добавлен ежедневный запуск всех тестов;
- добавлен статический анализ в PHP 8.
В пакете Yii Strings исправлены ошибки psalm и улучшена конфигурация GitHub Workflow (PR):
- добавлен ежедневный запуск всех тестов;
- добавлен статический анализ в PHP 8.
⚡️ #yiisoftMailerSymfony
Реализовали Yii Mailer Symfony Extension, теперь в библиотеке Yii Mailer можно использовать Symfony Mailer для отправки писем (PR).
Реализовали Yii Mailer Symfony Extension, теперь в библиотеке Yii Mailer можно использовать Symfony Mailer для отправки писем (PR).
⚡️ #yiisoftInjector
В пакете Yii Injector исправлены ошибки psalm и улучшена конфигурация GitHub Workflow (PR):
- добавлен ежедневный запуск всех тестов;
- добавлен статический анализ в PHP 8.
В пакете Yii Injector исправлены ошибки psalm и улучшена конфигурация GitHub Workflow (PR):
- добавлен ежедневный запуск всех тестов;
- добавлен статический анализ в PHP 8.
⚡️ #yiisoftYiiDebug
Улучшена конфигурация пакета Yii Debug + финализирован класс
Улучшена конфигурация пакета Yii Debug + финализирован класс
Yiisoft\Yii\Debug\DebuggerIdGenerator
(PR).