Autor | Zpráva | ||
---|---|---|---|
GeneralDv Profil |
#1 · Zasláno: 22. 1. 2011, 19:41:24 · Upravil/a: GeneralDv
Je na čase abych předělal v CMS spouštění modulů a vymejšlim způsob jejich volání. Moduly se vkládaj do článků, vlastních stránek, panelů - všechno je v DB, to znamená že se volaj dynamicky. Doteď jsem používal něco ve stylu Sunlightu:
[tag] NázevModulu, parametr1, parametr2 [/tag] Ale to mi nepřijde moc jako dobrý řešení, minimálně při složitějších věcech - třeba kdybych chtěl rozšířit o podmínky atd., bych v podstatě psal vlastní parser a to by asi výkonostně taky nebylo nejlepší. Napadlo mě že by se mohl spouštět PHP kód pomocí eval() (v tomhle případě to nebude moc prasárna ne?), přičemž by moduly byly z 'vnějšku' objektový: $_MODULE = new Module(); //někde na začátku stránky vytvořim objekt kterej zjednodušší spouštění všech modulů //... //.. tohle bude v článku vkládat např. anketu, ten kód bude vloženej mezi speciálnim tagem if ($_MODULE->call('Poll')) { //třída 'Poll' existuje //metoda getInstance vrátí objekt třídy kterou jsme měli v call $poll = $_MODULE->getInstance(); $poll->ok(); //metoda třídy Poll (příklad..) } else { $_MODULE->err(); //vyhodí chybovou hlášku o neexistujícím modulu } Jenže to zas chce trochu uživatelovu znalost PHP, ale z 2. stránky se to hodně rychle naučej, OOP API bude jednoduchý, třeba volání ankety by mohlo vypadat: //.. $poll = $_MODULE->getInstance(); //vrátí instanci třídy Poll $poll->select(Poll::ID, 1); //anketa s #1 if ($poll->exists) { //existuje $poll->view(Poll::VIEWTYPE_PANEL); //zobrazíme ji s typem formátovánim pro panel } //.. Jedinný příjemný řešení mně napadlo, jako komponenty ve WYSIWYG editoru, kterej ovčem nechci. Jak to řešíte vy? Trochu mě vystrašilo dnešní téma s rychlostí OOP, kdyby toho bylo víc na stránce, ale myslim že s rychlostí problém určitě nebude. Jo a ještě, konkrétní nastavení každý položky modulu (pro pochopení, např. ankety v modulu pro ankety) se provádí v nastavení. Co se týče vkládání kódu pro spouštění modulů, doporučili by jste mi jako BB kód [tag][/tag] nebo <% %> popř. něco jinýho? Druhej způsob vídávam častějš, je pohodlnější jeho zápis, ale to je asi věc názoru.. |
||
Časová prodleva: 13 let
|
0