Portál AbcLinuxu, 30. dubna 2025 19:07
Mám za úlohu vytvoriť platformu pre modulárny portál v jazyku PHP. Malo by sa to aspoň podobať na implementáciu MVC a poskytovať také funkcie, aby bolo možné jednotlivé služby inštalovať ako pluginy... Tak sem hodím svoje nápady.
Aby som to objasnil: Mám urobiť nejakú "knižnicu" v PHP. Ak chcete spustiť portál, len uploadnete na server, nakonfigurujete a uploadnete pluginy. Vlastne plugin by mala byť jedna služba, tá má nejaké stránky, obsluhuje nejaké data v DB, vyrába RSS/Atom feedy a pod. - jednoducho webová služba.
Tá platforma by mala tvoriť aj vrstvu persistencie. Budem potrebovat asi nejaké API (getObject, saveObject). Ale nikdy som nerobil s persistentnými objektmi, takze neviem ako to mám vlastne implementovať. Ak jeden objekt odkazuje na iný, mám selektovať vždy celý graf, alebo vždy selektovať objekt, ktorý chcem použiť? Neexistuje nejaký zrozumiteľný tutoriál k všeobecnej problematike persistencie?
DB model som vymyslel takto: Bude jedna tabuľka a tá bude mať 3 stĺpce - id objektu (bigint), jeho typ (varchar) a jedo dáta (blob). Pri inštalácii pluginov nebudem musieť vytvárať nové tabuľky.
Prichádzajúce requesty budem podľa path info preposieľať pluginom určeným v configuráku.
View si budú riešiť pluginy sami. To je všetko.. čo viac potrebujem? Asi len nejaký dokument "best practices".
Tiskni
Sdílej:
Tak som sa rozhodol pre šialený, ale o to jednoduchší postup. Použijem hotovú MVC platformu (nepamätám sa na meno) a implementujem Jednoduchý kontrolér - srdce portálu. Dorobím spomínané knižničné funkcie (Persistencia a pod.), použijem jednoduchý databázový model (jedna tabuľka "CREATE TABLE objects (id BIGINT, data BLOB)" (data budu v XML))
Musím použiť PHP, pretože nemám hosting s Javou, ani Monom (.NET). Musím robiť pluginy, lebo na tom bude robiť tlupa programátorov s kde kade. časť modelu bude implementovaná v knižnici a zvyšok logiky a View, implementuje každý plugin sám.
Neskôr chcem migrovať na Mono a C#, alebo Javu.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.