@springimport

Есть ли виртуальные namespace?

Я работаю с библиотекой 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 несуществующие классы?
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 1
qonand
@qonand
Software Engineer
По моему Вы изобретаете велосипед с "витруальными" namespaces. Если правильно понимаю проблему - Вы можете спокойно сделать интрефейс на который будет завязан Ваш код, а не обходимую библиотеку "подогнать" под этот интерфейс с помощью адаптера
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы