Я работаю с библиотекой swagger api для magento 2.
Для работы di делаю такую настройку:
'container' => [
'definitions' => [
'Vendor\Swagger\Magento2\Client\Api\QuoteCartItemRepositoryV1Api' => [
['class' => 'common\components\SwaggerMagento2Client\Api\QuoteCartItemRepositoryV1Api'],
[Instance::of('Vendor\Swagger\Magento2\Client\ApiClient')]
],
]
]
Из примера видно что для класса QuoteCartItemRepositoryV1Api делается замена и в параметр передается ApiClient который похожим путем тоже заменен на собственный со своими настройками.
Скажу сразу, в либе к большому сожалению нет интерфейсов и приходится работать напрямую с классами.
Меня не устраивает что я не смогу работать с другим приложением если захочу потому что классы завязаны на 1 приложение с правами.
Я подумал: а что если сделать виртуальные namespaces? Т.е. я подключаю класс не Vendor\Swagger\Magento2\Client\Api\QuoteCartItemRepositoryV1Api, а Vendor\
SpecificApplication\Swagger\Magento2\Client\Api\QuoteCartItemRepositoryV1Api. Для IDE можно написать правила для каждого случая и не будет ошибки не существующего класса. Вот я начал было реализовывать, но оказалось не могу заставить yii2 работать с несуществующими классами.
1. Адекватен ли такой способ если нет желания в каждом месте использования вручную не указывать приложение (конфиг) для класса? Может в таких случаях делают как-то по-другому?
2. Поддерживает ли di yii2 несуществующие классы?