Symfony: автоматическое подключение интерфейса

Что мне нужно для того, чтобы сделать эту работу?

interface BaseServiceInterface {
public function getRecords();
}

class BaseService implements BaseServiceInterface{
public function getRecords(){
return "bla";
}
}class SomeOtherService{

private $baseService;

public function __construct(BaseServiceInterface $baseService){
$this->baseService = $baseService;
}
}

мой service.yml выглядит так:

base_service:
class: AppBundle\Service\BaseService
autowire: true

Когда я пытаюсь запустить это, я получаю:

Невозможно автоматически передать аргумент 1 для AppBundle \ Service \ SomeOtherService, поскольку класс с подсказкой типа не существует (Class BaseServiceInterface не существует).

9

Решение

autowire не работает напрямую с интерфейсом.
вам нужно создать псевдоним службы, чтобы он работал.

services:
AppBundle\Service\BaseServiceInterface: '@AppBundle\Service\BaseService'

ссылка: https://symfony.com/doc/current/service_container/autowiring.html#working-with-interfaces

2

Другие решения

Других решений пока нет …