Witam, mam aplikację w symfony która łączy się za api. Żeby wyciąć logikę z kontrolera chcę utworzyć serwis który zajmie się wysyłaniem zapytań do api. Np. wystawienie ofert do serwisu aukcyjnego, i tu pytanie jakie argumenty klasa powinna przyjmować?
class OfferService { private $apiClient; public function __construct($apiClient) { /// } public function createOffer($data) { $apiClient->sendReq('/newOffer' .... , $data) // dalsza logika, jest jej sporo, stworzenie oferty to kilka zależnych requestów } }
Zgodnie z DI klasa powinna otrzymać w konstruktorze wszystkie zależności (albo w seterach opcjonalne). Więc tak, jeżeli Twój serwis wymaga apiClient to jak najbardziej przekazanie go w ten sposób jest zgodne ze sztuką.
Dzięki, mam dodatkowe pytanie, jak obsługiwać błędy w takim przypadku?
Np. metoda createOffer powinna zwracać true/false, response z api czy możne exception jeśli coś jest nie tak a true jeśli zapytanie się powiodło?
Wg mnie Exception jest lepszy bo możesz wyrzucić konkretny problem (jeżeli API go zwraca), natomiast false dużo Ci nie powie.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)