Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework][ZendFramework2] Event Manager - Listener
Forum PHP.pl > Forum > PHP > Frameworki
zbychoCom
Witam.
Może ktoś wytłumaczyć (tak łopatologicznie) do czego służą listenery w ZF2 i jak się ich używa? Kożystam z podręcznika, w którym ten temat jest poruszony, ale sam przykład jeszcze nie działa!
Crozin
Jakieś konkretne pytanie masz, czy pytasz o ogół? Jeśli to ostatnie to Google i szukasz:
1. Event-Driven programming/design
2. Event dispatcher PHP

Temat zbyt szeroki by w dwóch zdaniach skrócić go.
viking
Ja bym ci polecał poczytać o publisher/subscriber w JS (jeśli trochę znasz ten język). Tam jest to IMO dużo bardziej oczywiste, JS wręcz jest idealnym językiem do tego typu wzorców. W PHP jest to takie trochę na siłę, chociaż oczywiście miejscami przydatne.
irmidjusz
zbychoCom, tak w dużym skrócie, listenery zdarzeń to fragmenty kodu wykonywane po wystąpieniu jakiegoś zdarzenia, zgłaszanego/rzucanego/publikowanego/triggerowanego (itd. bo różnie się na to mówi) gdzieś indziej. W pseudokodzie (i ogromnym uproszczeniu) będzie to coś takiego:

  1. //mamy jakiś tam event manager, dostępny w jakiś sposób wszędzie
  2. $evm = new EventManager();
  3.  
  4. //gdzieś w kodzie coś rejestruje listenera na zdarzenie o nazwie 'user.deleted'
  5. $evm->addListener('user.deleted', function($eventContext){
  6. //tutaj wykonanie jakiegoś specyficznego kodu z okazji wystąpienia zdarzenia
  7. //$eventContext dostarcza jakieś dodatkowe info powiązane z tym zdarzeniem, które można wykorzystać:
  8. echo 'usuniety user ' . $eventContext['user_id'];
  9. });
  10.  
  11. //w innym miejscu kodu jest jakieś wywołanie takiego zdarzenia:
  12. $userRepository->remove($user);
  13. $eventContext = ['user_id' => $user->id];
  14. //ten parametr $eventContext będzie przekazany jako argument wywołania każdego listenera
  15. $evm->triggerEvent('user.deleted', $eventContext);


Chodzi o to, że możesz zarejestrować w event managerze wiele listenerów na różne zdarzenia, a po wystąpieniu zdarzenia event manager kolejno wykona kod każdego dołączonego do tego zdarzenia event listenera. Frameworki odpalają różnego rodzaju zdarzenia w pewnych istotnych momentach i w ten sposób możesz się wpiąć ze swoim kodem w takie zdarzenie i coś tam zrobić/zmienić.
Fluke
Tak jak w Symfony2. Jeśli wcześniej korzystałeś z Zend 1 to jest to odpowiednik "Pluginów"
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.