2016-12-30 5 views
9

Was muss ich tun, damit dies funktioniert?symfony: autowinding eine Schnittstelle

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; 
    } 
} 

meine service.yml sieht wie folgt aus:

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

Wenn ich versuche, dies zu laufen bekomme ich:

Kann nicht autowire Argument 1 für AppBundle \ Service \ SomeOtherService weil der Typ -gegliederte Klasse existiert nicht (Class BaseServiceInterface existiert nicht).

+0

haben Sie den 'SomeOtherService' im gleichen' service.yml' Datei registrieren? Sind alle Namensräume dieser Klasse korrekt? – Federkun

+0

@Federkun ja, wenn ich die "Schnittstelle" aus dem Konstruktor = entfernen, was bedeutet, dass ich direkt die Implementierung injiziere, funktioniert es. Wenn ich versuche, die Schnittstelle zu injizieren, wird ein Fehler zurückgegeben, der oben erwähnt wurde. –

+0

können Sie versuchen, Ihrem 'base_service' 'autowiring_types: BaseServiceInterface' hinzuzufügen? – Federkun

Antwort

Verwandte Themen