Autor | Zpráva | ||
---|---|---|---|
happy Profil |
#1 · Zasláno: 7. 7. 2010, 14:18:35
Ahoj
na hodně místech čtu že k tvorbě plugin systému mám použít navrhového vzoru observer. přečetl jsem o něm několik článků a stále nechápu jak bych tohle mohl v rámci plugin systému použít. jde mi hlavně o praktickou ukázku. nebo spíš o to jak to bude (může) prakticky fungovat. |
||
Johnik Profil |
#2 · Zasláno: 7. 7. 2010, 15:53:44
Podívej se na PureMVC framework v modifikaci pro php.
|
||
happy Profil |
#3 · Zasláno: 7. 7. 2010, 17:33:28
Johnik:
díky ale prolízat framework a hledat vněm něco co vlastne ani nevim co přesne ma být... |
||
Johnik Profil |
#4 · Zasláno: 7. 7. 2010, 17:36:31
Je to tam pekne videt. Neni to prolezani celeho frameworku, staci si najit Observer.php.
|
||
happy Profil |
#5 · Zasláno: 7. 7. 2010, 18:46:02
Johnik:
No kouknul jsem na to a chytřejší nejsem. at se na to dívám jak chci, nechápu, jak mi tohle může nějak pomoct v systému pluginů? |
||
Johnik Profil |
#6 · Zasláno: 7. 7. 2010, 19:19:57
Tak jinak.
Aplikace = facade registerObserver(IObserver observer) - zaregistruje pozorovatele sendNotification(name, body, type) - posle zpravu vsem pozorovatelum, metoda by si mela projit vsechny zaregistrovane observery a zavola na nich metodu notificationHandler(name, body, type) Plugin = observer notificationHandler(name, body, type) - obdrzi notifikaci, mela by obsahovat switch na rozpoznani name a podle nich zavolat prislusnou metodu sendNotification(name, body, type) - posle zpravu zpet na fasadu (pozorovatel si musi drzet referenci na fasadu!) - tady bacha na zacykleni notifikaci Observer i fasada mohou odesilat notifikace, na ktere reaguji ale uz pouze observeri nebo i fasada, zalezi co chces aby to delalo. |
||
happy Profil |
#7 · Zasláno: 7. 7. 2010, 20:17:42
Johnik:
pokud tomu dobře rozumím, tak musím mít zaregistrované všechny pozorovatele před posláním první notifikace? tzn každý plugin by měl mít někde seznam pozorovatelů, který načtu na začátku scriptu? pokud ano tak je to v podstatě jen o tom udělat si seznam pozorovatelů (dulezite je zde - co pozoruje, co spustit) a na určitem míste aplikace jim poslat info s názvem toho místa - a pokud je to to misto co pozoruji tak se pusti to co ma pozorovatel nastavene. |
||
Majkl578 Profil |
#8 · Zasláno: 7. 7. 2010, 20:44:23
Johnik:
„mela by obsahovat switch na rozpoznani name a podle nich zavolat prislusnou metodu“ Switch není moc elegantní řešení když jde o pluginy (tedy při vývoji neznámé pluginy). Spíš bych volil rozpoznávání podle registru observerů (asociativně název => objekt). happy: „musím mít zaregistrované všechny pozorovatele před posláním první notifikace?“ Logická úvaha říká, že ano. Nelze posílat notifikaci objektu, který fasáda nezná. |
||
happy Profil |
#9 · Zasláno: 7. 7. 2010, 21:27:09
no zůstavají mi tu dvě nevyřešené věci. dejme tomu, že budu mít aplikaci na mvc systému (klidně nějakém frameworku).
1, jak udělat aby mohl mí plugin nějakou vlastní stránku (s vlastní url). - protože v případě , že odkáži na url (která dejme tomu projde routerem) a bude hledat neexistující controller nebo neexistující action s navíc neexistující sablonou. - jedině snad že by nový plugin měl controller co by klasicky dědil baseController (což mi teď když nad tím přemýšlím nepříjde špatné). 2, pokud bude plugin viceméně samostatný jak jej v šabloně vykreslit? udělat si v šabloně taky notifikace? |
||
Časová prodleva: 14 let
|
0