У меня есть небольшая внешняя библиотека, которая предоставляет множество классов.
В моем проекте symfony4 я хотел бы объявить свой класс от поставщика как сервис с autowire и public.
Поэтому я включил мою библиотеку с помощью composer и добавил конфигурацию psr, например, в composer.json:
"autoload": {
"psr-4": {
"App\\": "src/",
"ExternalLibrary\\": "vendor/external-library/api/src/"
}
}
После этого я попытался изменить свои services.yaml на symfony следующим образом:
ExternalLibrary\:
resource: '../vendor/external-library/api/src/*'
public: true
autowire: true
Если я запускаю тесты или запускаю приложение, я получаю эту ошибку:
Cannot autowire service "App\Domain\Service\MyService": argument "$repository" of method "__construct()" references interface "ExternalLibrary\Domain\Model\Repository" but no such service exists. You should maybe alias this interface to the existing "App\Infrastructure\Domain\Model\MysqlRepository" service.
Если я добавлю в services.yaml интерфейс, это будет нормально работать:
ExternalLibrary\Domain\Model\Lotto\Repository:
class: '../vendor/external-library/api/src/Domain/Model/Repository.php'
public: true
autowire: true
Но у меня много классов, и я не хочу объявлять каждый класс, как я могу исправить services.yaml без объявления каждого отдельного сервиса?
Спасибо