• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Symfony 5 - kilka serwisów na jednym interfejsie, w jaki sposób skonfigurować

Cloud VPS
0 głosów
367 wizyt
pytanie zadane 7 lutego 2020 w PHP przez XiverKi Bywalec (2,050 p.)
edycja 7 lutego 2020 przez XiverKi

Dzień dobry,

Próbuje poćwiczyć troche z konfiguracją symfony. Stworzyłem katalog Service, a w nim interface MyServiceInterface.php oraz dwie klasy MyService.php oraz AnotherMyService.php.

Do akcji kontrolera przekazuje obiekt typu MyServiceInterface, w jaki sposób w konfiguracji yaml, mogę wskazać, który z nich ma być domyślnie wstrzykiwany, a w jaki sposób wskazać symfony, którego konkretnie ma używać?

services:
    app.myservice:
        class: App\Service\MyService
    app.myservice.another:
        class: App\Service\MyAnotherService

    App\Service\MyServiceInterface: '@app.myservice.another'

Zrobiłem powyższą konfiguracje w services.yaml, niby działa ale nie do końca tak jakbym chciał. Problemem jest to, że brakuje mi wartości domyslnej.

    App\Service\MyServiceInterface: '@app.myservice.another'

Po usunięciu powyższej linii, otrzymuje błąd, że nie może znaleźć żadnego serwisu.

1 odpowiedź

0 głosów
odpowiedź 8 lutego 2020 przez Ehlert Ekspert (215,050 p.)
Żeby jakaś klasa była domyślnie wstrzykiwana pod interfejs, to musisz utworzyć alias będący interfejsem.

https://symfony.com/doc/current/service_container/autowiring.html#dealing-with-multiple-implementations-of-the-same-type

Podobne pytania

0 głosów
1 odpowiedź 372 wizyt
pytanie zadane 30 października 2016 w PHP przez wanderer Gaduła (3,710 p.)
0 głosów
1 odpowiedź 248 wizyt
0 głosów
0 odpowiedzi 517 wizyt

93,456 zapytań

142,451 odpowiedzi

322,721 komentarzy

62,837 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...