Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework][ZendFramework2] Event Manager - Listener, Nasłuch - z czym to się je
zbychoCom
post
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 9
Dołączył: 7.04.2011

Ostrzeżenie: (0%)
-----


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!
Go to the top of the page
+Quote Post
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
viking
post
Post #3





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
irmidjusz
post
Post #4





Grupa: Zarejestrowani
Postów: 279
Pomógł: 60
Dołączył: 25.02.2012

Ostrzeżenie: (0%)
-----


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ć.
Go to the top of the page
+Quote Post
Fluke
post
Post #5





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 20.09.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Tak jak w Symfony2. Jeśli wcześniej korzystałeś z Zend 1 to jest to odpowiednik "Pluginów"
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 11:51