another_dream
@another_dream
Backend-разработчик, Laravel/ZF2/Yii2

Почему Magento 2 пытается инстанцировать интерфейс вместо корректного получения класса из DI-конфигурации?

Контекст:
- vendor пакет с описанным интерфейсом фабрики (условно SomeServiceFactoryInterface);
- модуль в Magento, в DI конфигурации (MyModule/etc/di.xml) которого явно прописан бинд интерфейса фабрики к её реализации (
<preference for="Vendor\SomeService\Factory\SomeServiceFactoryInterface" type="MyCompany\MyModule\Service\Factory\SomeServiceFactory" />
);

При попытке выполнить любую CLI-команду Magento (даже просто bin/magento) тут же падает, сообщая следующее:
лог ошибки

PHP Fatal error: Uncaught Error: Cannot instantiate interface Vendor\SomeService\Factory\SomeServiceFactoryInterface in /repo/magento/lib/internal/Magento/Framework/ObjectManager/Factory/Dynamic/Developer.php:50
Stack trace:
#0 /repo/magento/lib/internal/Magento/Framework/ObjectManager/ObjectManager.php(70): Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create('Vendor\\SomeService\\Fact...')
#1 /repo/magento/lib/internal/Magento/Framework/ObjectManager/Factory/AbstractFactory.php(144): Magento\Framework\ObjectManager\ObjectManager->get('Vendor\\SomeService\\Fact...')
#2 /repo/magento/lib/internal/Magento/Framework/ObjectManager/Factory/AbstractFactory.php(230): Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgument(Array, 'Vendor\\SomeService\\Fact...', NULL, 'someServiceFactory', 'MyCompany\\SomeOtherModule...')
#3 /repo/magento/lib/internal/Magento/Framework/ObjectManager/Factory/Dynamic/Developer.php(34): Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgumentsInRuntime('MyCompany\\SomeOtherModule...', Array, Array)
#4 /repo/magento/l in /repo/magento/lib/internal/Magento/Framework/ObjectManager/Factory/Dynamic/Developer.php on line 50
  • Вопрос задан
  • 19 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы