Autor Zpráva
extendy
Profil *
Ahoj. Zajímají mě vaše názory a zkušenosti co se týče implementace rozšiřujících modulů. Ve své aplikaci bych chtěl implementovat moduly různého druhu. Aplikace je realizovaná v PHP 5.3 a
"objektově". Mám třeba třídu Hash pro generování hashů a potřeboval bych ji rozšířit modulem pro podporu dalších hashů. Nebo bych třeba potřeboval modul, který by do třídy Menu přidal další nabídky, modul který realizuje průvodce nějakým exportem do něčeho a prostě tak různě. Projel jsem si různé projekty jako Drupala, Squirrelmail, Joomla a tam mi to nepřipadá jako šťastné řešení už proto, že moduly s různou funkčností se dají tvořit jen v Drupalu a tam je to realizované jen funkcemi. Já bych si rád vytvoříl nějakou třídu pro API apod. Potřeboval bych hlavně poradit jakým způsobem takové moduly nahrávat - při spuštění skriptů je to blbost protože to zpomaluje celou aplikaci, ve chvíli kdy ten modul bude potřeba zas nebudu ale vědět že ho mám k dispozici apod. Budu vděčný za jakékoliv rady. Děkuju.
Lamicz
Profil
při spuštění skriptů je to blbost protože to zpomaluje celou aplikaci, ve chvíli kdy ten modul bude potřeba zas nebudu ale vědět že ho mám k dispozici
Autoloading tříd je přece u OOP nejzákladnější výhoda, loaduje se to, co je potřeba. Dělá to na mne dojem, že to tvoje app nemá. Komponenty se nějakým způspobem registrují do aplikace a mají nějaký daný formát, adr. strukturu apod. Většinou v db je tabulka se seznamem všech komponent, stav, parametry. Ty může admin z administrace upravovat. Není tam moc co vymýšlet. Add fce v Drupalu - jestli se to dělá procedurálně nebo nějak přes OOP, je už jedno. Ono většinou jádra bývají OOP a pluginy mají jednodušší procedurální strukturu, aby si je mohl udělat i méně zdatný programátor, který OOP neovládá. BTW ta třída Hash mi přijde přinejmenším zajímavá, to jsem nějak nepobral, proč bych na to měl mít třídu, i když proč ne, záleží co dělá. A Menu je imho spíše otázka šablony. Komponenta nebo default šablona, která je blokově děděna. Využíváš snad nějakých šablon ;)
extendy
Profil *
Ty třídy co jsem uvedl byly jen příklady - ve skutečnosti jde o hodně složitější věci. Autoloading samozřejmě používám. To zpomalení načítání jsem myslel z toho důvodu, že by bylo potřeba při startu inicializovat všechny moduly tzn. zavolat nějakou fci init(), která by daný modul zaregistrovala do nějakých odvětví jako třeba odvětví hash, položka menu apod. To by bylo to zpoždění. Jinak by se třeba při zavolání Hash::vyrobCoNeumis('hash_x') musely přečíst všechny třídy a zjistit co umí. To s tou databází je dobrý nápad, ale zase moje aplikace pracuje víceméně nezávisle na databázi (respektive pracuje s ldapem) takže to také není bohužel moc vhodné.

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: