Możecie mi wyjaśnić po co są te całe eventy i dispatchery? Generalnie spotkałem się z sytuacją , w której po wykonaniu jakiejś akcji był tworzony event, który wysyłał emaila. Ale jaki jest tego cel? Nie rozumiem tego. #symfony #php
@belkot1122: wyobraź sobie, że jakiś byt coś robi. Chcesz jego działanie rozbudować o jakąś nową funkcjonalność. Dzięki temu, że masz mechanizm eventów możesz to zrobić "z zewnątrz" nie modyfikując go bezpośrednio.
@belkot1122: Tylko docelowo, większa aplikacja. Np po dodaniu faktury kosztowej do zapłaty, apka robi: - wysyła 3 różne emaile, wg różnych warunków (czyli conajmniej +9 linii bo IFy i zlecenie wysyłki) - jak powstała faktura, to musi przeliczyć budżet - jak został przeliczony budżet, to trzeba sprawdzić czy nie ma został przekroczony jakiś limit i tu znów może pójść np. wysyłka email - trzeba sprawdzić czy sprzedawca na fakturze istnieje już w systemie, jak nie to dodać rekord. Jak tak, to przypisać mu
@belkot1122 nie wiem czy miałeś do czynienia z WordPress, ale były tam hooki. Coś się, wykona i podpinasz się pod to.
Ogólnie pozwala ci to lepiej ogarnąć kod. Rozbijasz go na części, tutaj robisz jakieś zadanie, powiadamiasz event, że coś się wykonało i subscriber nasł#!$%@? czy event się pojawił i wykonuje kolejną akcję. Nie musisz ogarniać klas klas o długości 1500 linijek z 50 metodami wewnątrz, tylko wszędzie masz te 20-50
@belkot1122: zamysł jest taki by łatwo można było podpisać się pod takie zdarzenia i coś robić.
Pomyśl o tym ile rzeczy może się dziać gdy np. użytkownik się zarejestruje. Każda taka czynność musiałbyś wepchnąć do logiki aplikacji, a tak po prostu dodajesz nowy listener czekający na zdarzenie rejestracji i tam wrzucasz logikę.
- wysyła 3 różne emaile, wg różnych warunków (czyli conajmniej +9 linii bo IFy i zlecenie wysyłki)
- jak powstała faktura, to musi przeliczyć budżet
- jak został przeliczony budżet, to trzeba sprawdzić czy nie ma został przekroczony jakiś limit i tu znów może pójść np. wysyłka email
- trzeba sprawdzić czy sprzedawca na fakturze istnieje już w systemie, jak nie to dodać rekord. Jak tak, to przypisać mu
Ogólnie pozwala ci to lepiej ogarnąć kod. Rozbijasz go na części, tutaj robisz jakieś zadanie, powiadamiasz event, że coś się wykonało i subscriber nasł#!$%@? czy event się pojawił i wykonuje kolejną akcję. Nie musisz ogarniać klas klas o długości 1500 linijek z 50 metodami wewnątrz, tylko wszędzie masz te 20-50
Pomyśl o tym ile rzeczy może się dziać gdy np. użytkownik się zarejestruje. Każda taka czynność musiałbyś wepchnąć do logiki aplikacji, a tak po prostu dodajesz nowy listener czekający na zdarzenie rejestracji i tam wrzucasz logikę.
Dzięki temu Twoj kod jest dużo czystszy.