Что мне нужно для того, чтобы сделать эту работу?
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 не существует).
autowire не работает напрямую с интерфейсом.
вам нужно создать псевдоним службы, чтобы он работал.
services:
AppBundle\Service\BaseServiceInterface: '@AppBundle\Service\BaseService'
ссылка: https://symfony.com/doc/current/service_container/autowiring.html#working-with-interfaces
Других решений пока нет …