Autor Zpráva
Fisir
Profil
Celé to pojmu na praktickém příkladu.

Mám objektově psaný CMS s architekturou MVC. Umí základní věci, tzn. články, stránky, administrace, komentáře, vyhledávání. Teď bych chtěl vytvořit možnost vložení vlastních doplňků. Samozřejmě by to byla klasická cesta, tudíž by se potřebné soubory nakopírovaly do příslušného adresáře a v administraci by se doplněk povolil. Základní funkcionalitu bych vytvořit dokázal – triggerování eventů a následné zpracovávání na ně připojených akcí doplňků. Takto si ale umím představit pouze například logování, nikoli třeba manipulaci s vracenými daty (třeba doplněk pro parsování BB kódů). Jak řešit tohle?

Pak bych ale chtěl posunout úroveň doplňků ještě výš, a to tak, že by se celý systém skládal jen a pouze z doplňků a jádra. Jádro by obsluhovalo hlavně práci s doplňky a další věci, zatímco doplněk by byla třeba celá administrace nebo možnost zakládání článků a stránek. A tím se dostávám i k propojení jednotlivých doplňků – jak propojit doplněk Administrace a doplněk Články tak, abych mohl z administrace ty články vytvářet (tudíž aby se mi v administraci zobrazili příslušné volby)? Jako další bych mohl jmenovat třeba obrázky ke článkům nebo komentáře.

Prosím o radu, jak tohoto docílit tak, abych umožnil doplňkům upravit každou funkci CMS a nemusel při vymýšlení dalšího doplňku upravovat jádro, protože bych zjistil, že toho docílit nelze.
WertriK
Profil
Prosím o radu, jak tohoto docílit tak, abych umožnil doplňkům upravit každou funkci CMS a nemusel při vymýšlení dalšího doplňku upravovat jádro, protože bych zjistil, že toho docílit nelze.

Udělat si kvalitní návrh aplikace.


Běžně se to dělá přes rozhraní (interface). Administraci bych úplně jako doplněk neviděl, spíše kus jádra starající se o back-end.
Ten interface není nic jiného než dohoda o tom, že každý doplněk bude mít určité metody a ty budeš volat pomocí administrace, zbylé metody doplňku tě nezajímají.

Čašem třeba zjistíš že ti rozhraní nestačí a potřeboval by jsi jiné, tak si jej vytvoříš a nové doplňky budeš dělat pomocí nového, v administraci jen zjistíš jaké rozhraní modul používá a podle toho se vybere správná metoda.

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: