Autor Zpráva
GeneralDv
Profil
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..

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0