⚡️ #yiisoftFactory #yiisoftDi
Несколько изменений, касающихся дефинишенов в Yii Factory (PR):
• В динамических ссылках
• Объекты, указанные в дефинишене для передачи в качестве аргументов в конструктор, в фабрике теперь НЕ клонируются.
• В интерфейсе
• Удалён неиспользуемый код и некорректные тесты.
Несколько изменений, касающихся дефинишенов в Yii Factory (PR):
• В динамических ссылках
DynamicReference
запрещено использовать объекты. Попытка передать объект будет вызывать исключение (это работает и для контейнера).• Объекты, указанные в дефинишене для передачи в качестве аргументов в конструктор, в фабрике теперь НЕ клонируются.
• В интерфейсе
Yiisoft\Factory\DependencyResolverInterface
удалён метод shouldCloneOnResolve()
.• Удалён неиспользуемый код и некорректные тесты.
DependencyResolver
в Yii Dependency Injection адаптирован к этим изменениям (PR).⚡️ #yiisoftFactory #yiisoftDi
В конфигурациях контейнера и фабрики запрещено использование объектов, реализующих
В конфигурациях контейнера и фабрики запрещено использование объектов, реализующих
DefinitionInterface
, за исключением ссылок, то есть объектов, реализующих ReferenceInterface
(PR в Yii Factory, PR в Yii Dependency Injection).⚡️ #yiisoftFactory
При создании объекта с помощью фабрики из пакета Yii Factory, в случае возникновения циклической зависимости (на любом уровне вложенности), теперь выбрасывается исключение
Пример:
При создании объекта с помощью фабрики из пакета Yii Factory, в случае возникновения циклической зависимости (на любом уровне вложенности), теперь выбрасывается исключение
CircularReferenceException
(PR).Пример:
final class Chicken
{
public function __construct(Egg $egg)
{
}
}
final class Egg
{
public function __construct(Chicken $chicken)
{
}
}
// Будет выброшено исключение `CircularReferenceException`
$factory->create(Chicken::class);
⚡️ #yiisoftFactory
Подчистили код ссылок (
• Удалён метод
• Изменён тип результата в методах
• Улучшены описания в doc-блоках.
Подчистили код ссылок (
Reference
) в Yii Factory (PR):• Удалён метод
Reference::getId()
(нигде не использовался).• Изменён тип результата в методах
Reference::to()
и DynamicReference::to()
с ReferenceInterface
на self
.• Улучшены описания в doc-блоках.
⚡️ #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 на данный момент.
⚡️ Практически во всех пакетах добавлен ежедневный запуск тестов через GitHub Workflow.
#yiisoftCacheWincache #yiisoftView #yiisoftDi #yiisoftStrings #yiisoftRbacPhp #yiisoftYiiConsole #yiisoftCache #yiisoftDb #yiisoftRbac #yiisoftYiiAuthClient #yiisoftYiiGii #yiisoftViewTwig #yiisoftYiiWeb #yiisoftDbMssql #yiisoftDbOracle #yiisoftLog #yiisoftYiiDebug #yiisoftDbSqlite #yiisoftDbPgsql #yiisoftDbMysql #yiisoftEventDispatcher #yiisoftI18n #yiisoftYiiEvent #yiisoftYiiDbMigration #yiisoftValidator #yiisoftUser #yiisoftTranslatorMessageGettext #yiisoftSecurity #yiisoftMiddlewareDispatcher #yiisoftMutex #yiisoftNetworkUtilities #yiisoftProfiler #yiisoftProxy #yiisoftRequestBodyParser #yiisoftRouterFastroute #yiisoftInjector #yiisoftCacheApcu #yiisoftAuthJwt #yiisoftAuth #yiisoftAssets #yiisoftArrays #yiisoftAliases #yiisoftDemoApi #yiisoftDemo #yiisoftDataResponse #yiisoftData #yiisoftCsrf #yiisoftCookies #yiisoftConfig #yiisoftCacheMemcached #yiisoftCacheFile #yiisoftHttp #yiisoftHtml #yiisoftFiles #yiisoftFactory #yiisoftErrorHandler #yiisoftLogTargetDb #yiisoftLogTargetEmail #yiisoftLogTargetFile #yiisoftRequestModel #yiisoftRbacSpiralDb #yiisoftRateLimiter #yiisoftPackageTemplate #yiisoftMutexRedis #yiisoftMutexPdoPgsql #yiisoftMutexPdoOracle #yiisoftMutexFile #yiisoftMutexPdoMysql #yiisoftTranslatorFormatterSimple #yiisoftTranslatorFormatterIntl #yiisoftTranslatorExtractor #yiisoftTranslator #yiisoftTestSupport #yiisoftSession #yiisoftRouter #yiisoftRequirements #yiisoftTranslatorMessageDb #yiisoftTranslatorMessagePhp #yiisoftVarDumper #yiisoftWidget #yiisoftYiiBootstrap5 #yiisoftYiiBulma #yiisoftYiiCycle #yiisoftYiiDataview #yiisoftYiiDebugApi #yiisoftYiiDebugViewer #yiisoftMailerSwiftmailer #yiisoftMailer #yiisoftLogTargetSyslog #yiisoftJson #yiisoftForm #yiisoftYiiWidgets #yiisoftYiiView #yiisoftYiiSwagger #yiisoftYiiSentry
#yiisoftCacheWincache #yiisoftView #yiisoftDi #yiisoftStrings #yiisoftRbacPhp #yiisoftYiiConsole #yiisoftCache #yiisoftDb #yiisoftRbac #yiisoftYiiAuthClient #yiisoftYiiGii #yiisoftViewTwig #yiisoftYiiWeb #yiisoftDbMssql #yiisoftDbOracle #yiisoftLog #yiisoftYiiDebug #yiisoftDbSqlite #yiisoftDbPgsql #yiisoftDbMysql #yiisoftEventDispatcher #yiisoftI18n #yiisoftYiiEvent #yiisoftYiiDbMigration #yiisoftValidator #yiisoftUser #yiisoftTranslatorMessageGettext #yiisoftSecurity #yiisoftMiddlewareDispatcher #yiisoftMutex #yiisoftNetworkUtilities #yiisoftProfiler #yiisoftProxy #yiisoftRequestBodyParser #yiisoftRouterFastroute #yiisoftInjector #yiisoftCacheApcu #yiisoftAuthJwt #yiisoftAuth #yiisoftAssets #yiisoftArrays #yiisoftAliases #yiisoftDemoApi #yiisoftDemo #yiisoftDataResponse #yiisoftData #yiisoftCsrf #yiisoftCookies #yiisoftConfig #yiisoftCacheMemcached #yiisoftCacheFile #yiisoftHttp #yiisoftHtml #yiisoftFiles #yiisoftFactory #yiisoftErrorHandler #yiisoftLogTargetDb #yiisoftLogTargetEmail #yiisoftLogTargetFile #yiisoftRequestModel #yiisoftRbacSpiralDb #yiisoftRateLimiter #yiisoftPackageTemplate #yiisoftMutexRedis #yiisoftMutexPdoPgsql #yiisoftMutexPdoOracle #yiisoftMutexFile #yiisoftMutexPdoMysql #yiisoftTranslatorFormatterSimple #yiisoftTranslatorFormatterIntl #yiisoftTranslatorExtractor #yiisoftTranslator #yiisoftTestSupport #yiisoftSession #yiisoftRouter #yiisoftRequirements #yiisoftTranslatorMessageDb #yiisoftTranslatorMessagePhp #yiisoftVarDumper #yiisoftWidget #yiisoftYiiBootstrap5 #yiisoftYiiBulma #yiisoftYiiCycle #yiisoftYiiDataview #yiisoftYiiDebugApi #yiisoftYiiDebugViewer #yiisoftMailerSwiftmailer #yiisoftMailer #yiisoftLogTargetSyslog #yiisoftJson #yiisoftForm #yiisoftYiiWidgets #yiisoftYiiView #yiisoftYiiSwagger #yiisoftYiiSentry
⚡️ #yiisoftDefinitions #yiisoftDi #yiisoftFactory
Хелперы
В Yii Factory удалены дефинишены и классы для работы с ними, которые ранее были перенесены в Yii Definitions (PR).
—————
#yiisoftAssets #yiisoftYiiConsole #yiisoftCsrf #yiisoftDb #yiisoftForm #yiisoftMailerSwiftmailer #yiisoftMailerSymfony #yiisoftYiiQueue #yiisoftTranslator #yiisoftView #yiisoftWidget #yiisoftYiiBootstrap5 #yiisoftYiiDataview #yiisoftYiiDebug #yiisoftYiiDebugViewer #yiisoftYiiSwagger #yiisoftApp #yiisoftAppApi #yiisoftDemo #yiisoftDemoApi
Все пакеты и приложения, использующие дефинишены, переделаны на работу с пакетом Yii Definitions:
- Yii Assets (PR)
- Yii Bootstrap 5 (PR)
- Yii Console (PR)
- Yii CSRF (PR)
- Yii Data Widgets (PR)
- Yii DB (PR)
- Yii Debug (PR)
- Yii Debug Viewer (PR)
- Yii Form (PR)
- Yii Mailer Swiftmailer (PR)
- Yii Mailer Symfony (PR)
- Yii Message Translator (PR)
- Yii Queue (PR)
- Yii Swagger (commit)
- Yii View (PR)
- Yii Widget (PR)
- шаблон веб-приложения (PR),
- шаблон API-приложения (PR),
- демо веб-приложения (PR),
- демо API-приложения (PR).
Хелперы
ReferencesArray
и DynamicReferencesArray
перенесены из пакета Yii Dependency Injection (PR) в пакет Yii Definitions (PR).В Yii Factory удалены дефинишены и классы для работы с ними, которые ранее были перенесены в Yii Definitions (PR).
—————
#yiisoftAssets #yiisoftYiiConsole #yiisoftCsrf #yiisoftDb #yiisoftForm #yiisoftMailerSwiftmailer #yiisoftMailerSymfony #yiisoftYiiQueue #yiisoftTranslator #yiisoftView #yiisoftWidget #yiisoftYiiBootstrap5 #yiisoftYiiDataview #yiisoftYiiDebug #yiisoftYiiDebugViewer #yiisoftYiiSwagger #yiisoftApp #yiisoftAppApi #yiisoftDemo #yiisoftDemoApi
Все пакеты и приложения, использующие дефинишены, переделаны на работу с пакетом Yii Definitions:
- Yii Assets (PR)
- Yii Bootstrap 5 (PR)
- Yii Console (PR)
- Yii CSRF (PR)
- Yii Data Widgets (PR)
- Yii DB (PR)
- Yii Debug (PR)
- Yii Debug Viewer (PR)
- Yii Form (PR)
- Yii Mailer Swiftmailer (PR)
- Yii Mailer Symfony (PR)
- Yii Message Translator (PR)
- Yii Queue (PR)
- Yii Swagger (commit)
- Yii View (PR)
- Yii Widget (PR)
- шаблон веб-приложения (PR),
- шаблон API-приложения (PR),
- демо веб-приложения (PR),
- демо API-приложения (PR).
⚡️ #yiisoftFactory
В Yii Factory изменена логика создания объектов и разрешения зависимостей (PR). Новая логика представлена на блок-схеме.
В Yii Factory изменена логика создания объектов и разрешения зависимостей (PR). Новая логика представлена на блок-схеме.
⚡️ #yiisoftDefinitions #yiisoftFactory #yiisoftDi
Выполнен рефакторинг в пакете Yii Definitions (PR).
• Для разрешения зависимостей при получении объекта из
• Интерфейс
• В интерфейсе
Необходимые изменения внесены в пакеты Yii Factory (PR) и Yii Dependency Injection (PR).
Выполнен рефакторинг в пакете Yii Definitions (PR).
• Для разрешения зависимостей при получении объекта из
CallableDefinition
вместо обращения к DependencyResolverInterface::invoke()
используется внутренний функционал пакета. Это позволило исключить пакет yiisoft/injector
из зависимостей в Yii Factory и Yii Dependency Injection.• Интерфейс
DependencyResolverInterface
теперь НЕ наследуется от ContainerInterface
, а используемый метод get()
переименован в resolve()
.• В интерфейсе
DependencyResolverInterface
удалён метод invoke()
, так как теперь он нигде не используется.Необходимые изменения внесены в пакеты Yii Factory (PR) и Yii Dependency Injection (PR).
⚡️ #yiisoftDefinitions #yiisoftFactory #yiisoftDi #yiisoftDb
В Yii Definitions удалён интерфейс
Соответствующие изменения внесены в пакеты, которые использовали
- Yii Factory (PR),
- Yii Dependency Injection (PR),
- Yii DB (PR).
В Yii Definitions удалён интерфейс
DependencyResolverInterface
, вместо него теперь используется PSR-интерфейс ContainerInterface
(PR).Соответствующие изменения внесены в пакеты, которые использовали
DependencyResolverInterface
:- Yii Factory (PR),
- Yii Dependency Injection (PR),
- Yii DB (PR).
⚡️ #yiisoftFactory
Сделали очередной рефакторинг в Yii Factory (
Сделали очередной рефакторинг в Yii Factory (
DependencyResolver
переделан в FactoryContainer
) и добавили тестов (PR).⚡️ #yiisoftDefinitions #yiisoftFactory #yiisoftDi
Изменение в Yii Definitions: теперь если обязательные nullable-параметры не удаётся разрешить, то выбрасывается исключение (PR).
Например, имеем класс:
Если при создании класса
В соответствии с этим изменением исправлены тесты в Yii Factory (PR) и Yii Dependency Injection (PR).
Изменение в Yii Definitions: теперь если обязательные nullable-параметры не удаётся разрешить, то выбрасывается исключение (PR).
Например, имеем класс:
final class Garage
{
public function __construct(?Car $car)
{
}
}
Если при создании класса
Garage
, не удастся создать объект Car
для передачи его в конструктор, то будет брошено исключение. Ранее в этом случае в конструктор передавался null
.В соответствии с этим изменением исправлены тесты в Yii Factory (PR) и Yii Dependency Injection (PR).
⚡️ #yiisoftDefinitions #yiisoftFactory #yiisoftDi
Дефинишены, фабрика и контейнер всё ближе к релизу.
• В Yii Factory добавили документацию в readme и описания в doc-блоках.
• В Yii Definitions актуализировали readme и подчистили код.
• Перенесли класс
• В тестах Yii Dependency Injection обновили версию
Дефинишены, фабрика и контейнер всё ближе к релизу.
• В Yii Factory добавили документацию в readme и описания в doc-блоках.
• В Yii Definitions актуализировали readme и подчистили код.
• Перенесли класс
DefinitionStorage
из Yii Dependency Injection (PR) в Yii Definitions (PR).• В тестах Yii Dependency Injection обновили версию
league/container
до ^4.2
(PR).⚡️ #yiisoftDi #yiisoftFactory #yiisoftDefinitions
Продолжается работа на тройкой пакетов: контейнер, фабрика и дефинишены.
• Расширения в Yii Dependency Injection, возвращающие
• В Yii Definitions (PR) удалено исключение
• В пакете Yii Definitions удалён класс
• В методе
• Доработана документация в Yii Dependency Injection, в частности добавлено описание делегатов (PR).
Продолжается работа на тройкой пакетов: контейнер, фабрика и дефинишены.
• Расширения в Yii Dependency Injection, возвращающие
null
, теперь игнорируются при получении сервиса из контейнера (PR).• В Yii Definitions (PR) удалено исключение
NotFoundException
, а в Yii Dependency Injection (PR) и Yii Factory (PR) добавлены индивидуальные исключения NotFoundException
.• В пакете Yii Definitions удалён класс
ArrayDefinitionBuilder
, его функционал перенесён в класс ArrayDefinition
(PR).• В методе
DefinitionResolver::resolveArray()
(пакет Yii Definitions) параметр $dependencies
переименован в $definitions
(PR).• Доработана документация в Yii Dependency Injection, в частности добавлено описание делегатов (PR).
⚡️ #yiisoftDi #yiisoftFactory #yiisoftDefinitions
Несколько изменений в Yii Definitions:
• Методы класса
• Изменили пространства имён в Yii Definitions (PR):
-
-
Соответствующие изменение внесены в Yii Dependency Injection (PR) и Yii Factory (PR).
Несколько изменений в Yii Definitions:
• Методы класса
DefinitionExtractor
в Yii Definitions сделаны статическими (PR).• Изменили пространства имён в Yii Definitions (PR):
-
Yiisoft\Definitions\Infrastructure\
→ Yiisoft\Definitions\Helpers\
;-
Yiisoft\Definitions\Infrastructure\DefinitionStorage
→ Yiisoft\Definitions\Helpers\DefinitionStorage
.Соответствующие изменение внесены в Yii Dependency Injection (PR) и Yii Factory (PR).