EventBroadcaster v PHP, Nette – má to smysl?
- vaclav
- Člen | 4
Zdravím, hraji si s Nette už pár měsíců. A co říct úvodem jsem uchvácen :)
Nejsem zrovna kovaný PHP programátor, mojí doménou je spíše
ActionScript. Zajímal by mě váš názor na smysluplnost využítí
EventBroadcasteru respektive návrhového vzoru Observer
v PHP potažmo v Nette…
Takhle třeba vypadá implemetace EventBroadcastru v mém
oblíbeném AS3 frameworku LowRa
Proč vlastně? Vezmu li si třeba situaci kdy mám model Pages a chci reagovat nějakým způsobem na přidávání nových stránek např. odesláním mailové notifikace.
Tak mě v tuto chvíli napadly dvě možnosti
- přidat do modelu odeslání mailu přímo ve metodě která přidává stránky – což mi nepříjde zrovna šťastné řešení
- přidat odeslání do presenteru do metody která článek odesílá tzn. do submitu formuláře
Ale v případě že bych chtěl k mailové notifikaci přidat třeba ještě logování přídávání článku atd. Nebo třeba stránku před uložením nějakým způsobem modifikovat..
První co mě napadlo je řešit to ve stylu Drupalu který využívá hooks.
Ale přišlo mi že řešení pomocí signalů/eventu a Observeru by to
možná bylo štastnější a více objektové.
Vpodstatě model nebo presenter by vyvolali údálost onAddPage na kterou by
reagovaly modely které tomuto eventu naslouchjí.
Ideální využití by mohlo být ve chvíli kdy mám více modulů a potřebuji aby na sebe mohli bez závislosti reagovat. Respektive mám třeba PagesModule, MailModule, LogginModule. Kdy MailModule a LogginModule reagují na události vyvolané PagesModulem.
Je nějaké řešení v Nette které jsem přehlédl, napadá vás lepší řešení :) nebo vám příjde že by mělo smysl něco podobného implementovat.
Díky za radu
Editoval vaclav (26. 1. 2010 17:13)